#!/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 # This file does not have a bitmap infile=${data_dir}/regular_latlon_surface.grib1 # Clean environment before we begin unset GRIB_IEEE_PACKING unset ECCODES_GRIB_IEEE_PACKING shdata=${data_dir}/spherical_model_level.grib1 suff=_ieee_test.grib1 outsimple=simple$suff out32=32$suff out64=64$suff cat > w.filter < r.filter < $outsimple.txt diff $outsimple.txt ${data_dir}/ieee_test.good ${tools_dir}/grib_set -r -s packingType=grid_ieee $outsimple $out32 ${tools_dir}/grib_filter r.filter $out32 > $out32.txt diff $out32.txt ${data_dir}/ieee_test.good export GRIB_IEEE_PACKING=32 ${tools_dir}/grib_filter -o $out32 w.filter $infile ${tools_dir}/grib_filter r.filter $out32 > $out32.txt diff $out32.txt ${data_dir}/ieee_test.good grib_check_key_equals $out32 'packingType,precision,accuracy' 'grid_ieee 1 32' export GRIB_IEEE_PACKING=64 ${tools_dir}/grib_filter -o $out64 w.filter $infile ${tools_dir}/grib_filter r.filter $out64 > $out64.txt diff $out64.txt ${data_dir}/ieee_test.good grib_check_key_equals $out64 'packingType,precision,accuracy' 'grid_ieee 2 64' rm -f $outsimple $out32 $out64 $out32.txt $out64.txt rm -f ${data_dir}/$outsimple.txt ${data_dir}/$out32.txt ${data_dir}/$out64.txt rm -f w.filter $outsimple.txt ${tools_dir}/grib_filter r.filter $shdata > $shdata.txt diff $shdata.txt $shdata.good ${tools_dir}/grib_set -r -s packingType=grid_ieee $shdata ${shdata}_ieee ${tools_dir}/grib_filter r.filter ${shdata}_ieee > $shdata.txt diff $shdata.txt $shdata.good rm -f ${shdata}_ieee unset GRIB_IEEE_PACKING unset ECCODES_GRIB_IEEE_PACKING echo "Test ECC-1075: grib_dump error on GRIB1 with raw packing" # ------------------------------------------------------------- temp=temp.grib_ieee.grib infile=${data_dir}/reduced_gaussian_surface.grib1 grib_check_key_equals $infile numberOfMissing 0 ${tools_dir}/grib_set -r -s packingType=grid_ieee $infile $temp grib_check_key_equals $temp 'numberOfEffectiveValues,numberOfValues' '6114 6114' ${tools_dir}/grib_get -p numberOfEffectiveValues,numberOfValues $temp #${tools_dir}/grib_dump -O $temp stats1=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $infile` stats2=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $temp` [ "$stats1" = "$stats2" ] echo "Test raw packing on GRIB2 with bitmap..." # --------------------------------------------- infile=${data_dir}/reduced_latlon_surface.grib2 grib_check_key_equals $infile numberOfMissing,const '98701 0' ${tools_dir}/grib_set -r -s packingType=grid_ieee $infile $temp ${tools_dir}/grib_get -p numberOfEffectiveValues,numberOfValues,numberOfMissing $temp stats1=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $infile` stats2=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $temp` [ "$stats1" = "$stats2" ] grib_check_key_equals $temp numberOfEffectiveValues,numberOfValues,numberOfMissing '214661 214661 98701' grib_check_key_equals $temp totalLength 899004 echo "Test ECCODES_GRIB_IEEE_PACKING on GRIB2 with bitmap..." # ------------------------------------------------------------ infile=${data_dir}/reduced_latlon_surface.grib2 grib_check_key_equals $infile bitmapPresent 1 ECCODES_GRIB_IEEE_PACKING=32 ${tools_dir}/grib_copy -r $infile $temp grib_check_key_equals $temp packingType grid_ieee ${tools_dir}/grib_compare -c data:n -R all=6e-8 $infile $temp echo "Test ECCODES_GRIB_IEEE_PACKING on GRIB2 without bitmap..." # -------------------------------------------------------------- infile=${data_dir}/regular_latlon_surface.grib2 grib_check_key_equals $infile bitmapPresent 0 ECCODES_GRIB_IEEE_PACKING=32 ${tools_dir}/grib_copy -r $infile $temp grib_check_key_equals $temp packingType grid_ieee ${tools_dir}/grib_compare -c data:n $infile $temp #### All combinations: with/without bitmap, grib1/2, 32/64bits editions="1 2" precisions="32 64" inputs="reduced_latlon_surface.grib regular_latlon_surface.grib" for edition in $editions; do for prec in $precisions; do for input in $inputs; do infile=${data_dir}/$input$edition ECCODES_GRIB_IEEE_PACKING=$prec ${tools_dir}/grib_copy -r $infile $temp grib_check_key_equals $temp packingType grid_ieee ${tools_dir}/grib_compare -c data:n -R all=6e-8 $infile $temp done done done echo "Test ECC-1345: env. var value should be checked..." # ------------------------------------------------------- tempErr=temp.grib_ieee.txt set +e # Should fail. Only 32 and 64 are valid infile=${data_dir}/regular_latlon_surface.grib2 ECCODES_GRIB_IEEE_PACKING=16 ${tools_dir}/grib_copy -r $infile $temp 2>$tempErr status=$? set -e [ $status -ne 0 ] grep -q "Invalid value for ECCODES_GRIB_IEEE_PACKING: should be 32 or 64" $tempErr rm -f $tempErr echo "Test raw packing on GRIB1 with bitmap..." # --------------------------------------------- infile=${data_dir}/reduced_latlon_surface.grib1 grib_check_key_equals $infile numberOfMissing 98701 ${tools_dir}/grib_set -r -s packingType=grid_ieee $infile $temp ${tools_dir}/grib_get -p numberOfEffectiveValues,numberOfValues,numberOfMissing $temp stats1=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $infile` stats2=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $temp` [ "$stats1" = "$stats2" ] ECCODES_GRIB_IEEE_PACKING=32 ${tools_dir}/grib_copy -r $infile $temp stats2=`${tools_dir}/grib_get -M -F%.3f -p min,max,avg $temp` [ "$stats1" = "$stats2" ] echo "Test changing precision ..." # ---------------------------------- infile=${data_dir}/grid_ieee.grib grib_check_key_equals $infile 'precision,section7Length' '1 44005' # Switch from 32bits to 64bits ${tools_dir}/grib_set -r -s precision=2 $infile $temp grib_check_key_equals $temp 'precision,section7Length' '2 88005' stats1=`${tools_dir}/grib_get -M -F%.3f -p skew,kurt $infile` stats2=`${tools_dir}/grib_get -M -F%.3f -p skew,kurt $temp` [ "$stats1" = "$stats2" ] # The same thing but use 'accuracy' instead of 'precision' temp2=temp2.grib_ieee.grib ${tools_dir}/grib_set -r -s accuracy=64 $infile $temp2 cmp $temp $temp2 rm -f $temp2 rm -f $temp ################################## # Disabled for now. Infinite loop #GRIB_IEEE_PACKING=32 #export GRIB_IEEE_PACKING #${tools_dir}/grib_copy -r $shdata ${shdata}_32 #${tools_dir}/grib_filter r.filter ${shdata}_32 > ${shdata}_32.txt #diff ${shdata}_32.txt ${shdata}_32.good #GRIB_IEEE_PACKING=64 #export GRIB_IEEE_PACKING #${tools_dir}/grib_copy -r $shdata ${shdata}_64 #${tools_dir}/grib_filter r.filter ${shdata}_64 > ${shdata}_64.txt #diff ${shdata}_64.txt ${shdata}.good rm -f r.filter ${shdata}_64.txt ${shdata}_32.txt $shdata.txt