mirror of https://github.com/ecmwf/eccodes.git
Testing: add Fortran test for encoding with a packingType
This commit is contained in:
parent
2eb51e5249
commit
08af171c0a
|
@ -115,6 +115,14 @@ foreach( tool ${tests_extra} )
|
|||
TEST_DEPENDS eccodes_download_gribs eccodes_download_bufrs )
|
||||
endforeach()
|
||||
|
||||
# Test for CCSDS (AEC) packing
|
||||
ecbuild_add_test( TARGET eccodes_f_grib_set_packing
|
||||
SOURCES grib_set_packing.f90
|
||||
LINKER_LANGUAGE Fortran
|
||||
LIBS eccodes_f90 eccodes
|
||||
CONDITION HAVE_AEC AND HAVE_FORTRAN
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/grib_set_packing.sh )
|
||||
|
||||
# Executables without a shell script
|
||||
# TODO
|
||||
ecbuild_add_executable( TARGET eccodes_f_new_from_file
|
||||
|
|
|
@ -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.
|
||||
!
|
||||
! Description: set the packingType in a GRIB file
|
||||
! e.g. Simple packing, CCSDS
|
||||
!
|
||||
program set_packing
|
||||
use eccodes
|
||||
implicit none
|
||||
integer :: outfile
|
||||
integer :: i, igrib, iret, numberOfValues, cnt
|
||||
real :: d, e
|
||||
real, dimension(:), allocatable :: values
|
||||
integer, parameter :: max_strsize = 200
|
||||
character(len=max_strsize) :: outfile_name, packing_type
|
||||
|
||||
call getarg(1, packing_type)
|
||||
call getarg(2, outfile_name)
|
||||
|
||||
call codes_open_file(outfile,outfile_name,'w')
|
||||
|
||||
call codes_grib_new_from_samples(igrib, 'gg_sfc_grib2')
|
||||
|
||||
call codes_get_size(igrib,'values', numberOfValues)
|
||||
allocate(values(numberOfValues), stat=iret)
|
||||
d = 10e-6
|
||||
e = d
|
||||
cnt = 1
|
||||
do i=1,numberOfValues
|
||||
if (cnt>100) then
|
||||
e = e*1.01
|
||||
cnt=1
|
||||
endif
|
||||
values(i) = d
|
||||
d = d + e
|
||||
cnt = cnt + 1
|
||||
end do
|
||||
|
||||
call codes_set(igrib, 'numberOfBitsContainingEachPackedValue', 16)
|
||||
call codes_set(igrib, 'packingType', packing_type)
|
||||
|
||||
! set data values
|
||||
call codes_set(igrib, 'values', values)
|
||||
|
||||
call codes_write(igrib, outfile)
|
||||
call codes_release(igrib)
|
||||
deallocate(values)
|
||||
|
||||
end program set_packing
|
|
@ -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.sh
|
||||
|
||||
tempSimple=temp.f_grib_set_packing.simple.grib
|
||||
tempSecond=temp.f_grib_set_packing.second.grib
|
||||
tempCCSDS=temp.f_grib_set_packing.ccsds.grib
|
||||
|
||||
${examples_dir}/eccodes_f_grib_set_packing grid_simple $tempSimple
|
||||
${examples_dir}/eccodes_f_grib_set_packing grid_second_order $tempSecond
|
||||
${examples_dir}/eccodes_f_grib_set_packing grid_ccsds $tempCCSDS
|
||||
|
||||
${tools_dir}/grib_ls -P packingType -n statistics $tempSimple $tempCCSDS $tempSecond
|
||||
|
||||
p=`${tools_dir}/grib_get -p packingType $tempSimple`
|
||||
[ "$p" = "grid_simple" ]
|
||||
p=`${tools_dir}/grib_get -p packingType $tempSecond`
|
||||
[ "$p" = "grid_second_order" ]
|
||||
p=`${tools_dir}/grib_get -p packingType $tempCCSDS`
|
||||
[ "$p" = "grid_ccsds" ]
|
||||
|
||||
${tools_dir}/grib_compare -c data:n $tempSimple $tempCCSDS
|
||||
${tools_dir}/grib_compare -c data:n $tempSimple $tempSecond
|
||||
|
||||
|
||||
rm -f $tempSimple $tempCCSDS
|
Loading…
Reference in New Issue