mirror of https://github.com/ecmwf/eccodes.git
Merge branch 'develop' into bugfix/ECC-1407-IEEE
This commit is contained in:
commit
31a6a619d8
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test the use of optimizeScaleFactor; on the following field, the packing error
|
* Test the use of optimizeScaleFactor; on the following field, the packing error
|
||||||
* is reduced by almost a factor of 2;
|
* is reduced by almost a factor of 2;
|
||||||
* Test that second order packing gives the same result as simple packing with optimizeScaleFactor=1
|
* Test that second order packing gives the same result as simple packing with optimizeScaleFactor=1
|
||||||
* philippe.marguinaud@meteo.fr, 2016/02
|
* philippe.marguinaud@meteo.fr, 2016/02
|
||||||
*/
|
*/
|
||||||
|
@ -2718,6 +2718,7 @@ static void encode_decode(double* zval, const char* packingType, const int bitsP
|
||||||
size_t len, slen;
|
size_t len, slen;
|
||||||
grib_handle* h;
|
grib_handle* h;
|
||||||
|
|
||||||
|
/*printf("encode_decode: packingType=%s bitsPerValue=%d opt=%d\n", packingType, bitsPerValue, ioptimizeScaleFactor);*/
|
||||||
GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "regular_ll_pl_grib2")) == NULL), 0);
|
GRIB_CHECK(((h = grib_handle_new_from_samples(NULL, "regular_ll_pl_grib2")) == NULL), 0);
|
||||||
GRIB_CHECK(grib_set_long(h, "Ni", NLON), 0);
|
GRIB_CHECK(grib_set_long(h, "Ni", NLON), 0);
|
||||||
GRIB_CHECK(grib_set_long(h, "Nj", NLAT), 0);
|
GRIB_CHECK(grib_set_long(h, "Nj", NLAT), 0);
|
||||||
|
@ -2749,8 +2750,7 @@ int main(int argc, char* argv[])
|
||||||
int bitsPerValue[11] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
|
int bitsPerValue[11] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
|
||||||
int ipackingType, ibitsPerValue, ioptimizeScaleFactor;
|
int ipackingType, ibitsPerValue, ioptimizeScaleFactor;
|
||||||
|
|
||||||
|
for (ibitsPerValue = 0; ibitsPerValue < 11; ibitsPerValue++) {
|
||||||
for (ibitsPerValue = 0; ibitsPerValue < 11; ibitsPerValue++)
|
|
||||||
for (ipackingType = 0; ipackingType < 2; ipackingType++) {
|
for (ipackingType = 0; ipackingType < 2; ipackingType++) {
|
||||||
double zval_simple[NLAT * NLON];
|
double zval_simple[NLAT * NLON];
|
||||||
double zval_second[NLAT * NLON];
|
double zval_second[NLAT * NLON];
|
||||||
|
@ -2766,7 +2766,7 @@ int main(int argc, char* argv[])
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
printf(" %30s %30s %30s %s\n", "bitsPerValue", "error(optimizeScaleFactor=0)", "error(optimizeScaleFactor=1)", "ratio");
|
printf(" %30s %30s %30s %s\n", "bitsPerValue", "error(optimizeScaleFactor=0)", "error(optimizeScaleFactor=1)", "ratio");
|
||||||
for (ibitsPerValue = 0; ibitsPerValue < 11; ibitsPerValue++) {
|
for (ibitsPerValue = 0; ibitsPerValue < 11; ibitsPerValue++) {
|
||||||
double zerr[2];
|
double zerr[2];
|
||||||
|
|
|
@ -12,13 +12,15 @@
|
||||||
|
|
||||||
workdir=`pwd`
|
workdir=`pwd`
|
||||||
REDIRECT=/dev/null
|
REDIRECT=/dev/null
|
||||||
|
label="grib_second_order_test"
|
||||||
|
tempText=temp.$label.txt
|
||||||
|
|
||||||
cd ${data_dir}
|
cd ${data_dir}
|
||||||
|
|
||||||
encoding=1
|
encoding=1
|
||||||
simple_no_bitmap=simple.grib
|
simple_no_bitmap=simple.grib
|
||||||
simple_bitmap=simple_bitmap.grib
|
simple_bitmap=simple_bitmap.grib
|
||||||
test_filter=temp.grib_second_order.filter
|
test_filter=temp.$label.filter
|
||||||
|
|
||||||
files_no_bitmap="gen_ext.grib \
|
files_no_bitmap="gen_ext.grib \
|
||||||
gen_ext_boust.grib \
|
gen_ext_boust.grib \
|
||||||
|
@ -113,9 +115,9 @@ res=`${tools_dir}/grib_get -w count=1 -l 0,0,1 lfpw.grib1`
|
||||||
g1files="lfpw.grib1
|
g1files="lfpw.grib1
|
||||||
gen_ext_spd_2.grib
|
gen_ext_spd_2.grib
|
||||||
gen_ext_spd_3.grib"
|
gen_ext_spd_3.grib"
|
||||||
temp1=temp1.grib_second_order.grib
|
temp1=temp1.$label.grib
|
||||||
temp_stat1=temp.grib_second_order.stat1
|
temp_stat1=temp.$label.stat1
|
||||||
temp_stat2=temp.grib_second_order.stat2
|
temp_stat2=temp.$label.stat2
|
||||||
|
|
||||||
for f1 in $g1files; do
|
for f1 in $g1files; do
|
||||||
# This does unpack and repack
|
# This does unpack and repack
|
||||||
|
@ -128,15 +130,16 @@ done
|
||||||
# GRIB-883
|
# GRIB-883
|
||||||
# ------------
|
# ------------
|
||||||
# Two coded values: Should stay as grid_simple
|
# Two coded values: Should stay as grid_simple
|
||||||
temp2=temp2.grib_second_order.grib
|
temp2=temp2.$label.grib
|
||||||
temp3=temp3.grib_second_order.grib
|
temp3=temp3.$label.grib
|
||||||
cat > $test_filter<<EOF
|
cat > $test_filter<<EOF
|
||||||
set values={ 2.1, 3.4 };
|
set values={ 2.1, 3.4 };
|
||||||
write;
|
write;
|
||||||
EOF
|
EOF
|
||||||
${tools_dir}/grib_filter -o $temp2 $test_filter $ECCODES_SAMPLES_PATH/GRIB2.tmpl
|
${tools_dir}/grib_filter -o $temp2 $test_filter $ECCODES_SAMPLES_PATH/GRIB2.tmpl
|
||||||
${tools_dir}/grib_set -r -s packingType=grid_second_order $temp2 $temp3
|
ECCODES_DEBUG=1 ${tools_dir}/grib_set -r -s packingType=grid_second_order $temp2 $temp3 2>$tempText
|
||||||
grib_check_key_equals $temp3 packingType,accuracy 'grid_simple 24'
|
grib_check_key_equals $temp3 packingType,accuracy 'grid_simple 24'
|
||||||
|
grep -q "Packing not changed" $tempText
|
||||||
|
|
||||||
# Three coded values: Now we can change to 2nd order
|
# Three coded values: Now we can change to 2nd order
|
||||||
cat > $test_filter<<EOF
|
cat > $test_filter<<EOF
|
||||||
|
@ -174,4 +177,4 @@ grib_check_key_equals $temp1 packingType grid_simple
|
||||||
# Clean up
|
# Clean up
|
||||||
rm -f $temp_stat1 $temp_stat2
|
rm -f $temp_stat1 $temp_stat2
|
||||||
rm -f $temp1 $temp2 $temp3 $sec_ord_bmp
|
rm -f $temp1 $temp2 $temp3 $sec_ord_bmp
|
||||||
rm -f $test_filter
|
rm -f $test_filter $tempText
|
||||||
|
|
Loading…
Reference in New Issue