mirror of https://github.com/ecmwf/eccodes.git
API example: grib_set_data for Fortran
This commit is contained in:
parent
1b89895fc6
commit
3a3255cd2f
|
@ -72,6 +72,7 @@ list( APPEND tests
|
|||
grib_copy_message
|
||||
grib_ensemble_index
|
||||
grib_set_pv
|
||||
grib_set_data
|
||||
grib_set_bitmap
|
||||
grib_list
|
||||
grib_get_data
|
||||
|
|
|
@ -66,7 +66,7 @@ int main(int argc, char** argv)
|
|||
for (i=0;i<values_len;i++) {
|
||||
if (count>100) {e*=10; count=1;}
|
||||
values[i]=d;
|
||||
printf("%g \n",values[i]);
|
||||
/*printf("%g \n",values[i]);*/
|
||||
d+=e;
|
||||
count++;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
# Copyright 2005-2016 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
|
||||
|
||||
OUT=temp.c_grib_set_data.out.grib
|
||||
|
||||
${examples_dir}c_grib_set_data $OUT
|
||||
|
||||
rm -f $OUT
|
|
@ -25,6 +25,7 @@ list( APPEND tests
|
|||
grib_set_bitmap
|
||||
grib_set_missing
|
||||
grib_set_pv
|
||||
grib_set_data
|
||||
grib_samples
|
||||
grib_count_messages
|
||||
grib_count_messages_multi
|
||||
|
|
|
@ -29,10 +29,10 @@ program sample
|
|||
indicatorOfParameter = 61
|
||||
decimalPrecision = 2
|
||||
|
||||
! A new grib message is loaded from an existing sample.
|
||||
! Samples are searched in a default sample path (use codes_info
|
||||
! to see where that is). The default sample path can be changed by
|
||||
! setting the environment variable ECCODES_SAMPLES_PATH
|
||||
! A new grib message is loaded from an existing sample.
|
||||
! Samples are searched in a default sample path (use codes_info
|
||||
! to see where that is). The default sample path can be changed by
|
||||
! setting the environment variable ECCODES_SAMPLES_PATH
|
||||
call codes_grib_new_from_samples(igribsample, "regular_latlon_surface.grib1")
|
||||
|
||||
call codes_open_file(outfile, 'f_out.samples.grib1','w')
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
! Copyright 2005-2016 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 data contained in a GRIB file.
|
||||
! In this example no missing values are present.
|
||||
! If there are missing values, refer to: grib_set_bitmap
|
||||
!
|
||||
program set_data
|
||||
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
|
||||
|
||||
call getarg(1, outfile_name)
|
||||
call codes_open_file(outfile,outfile_name,'w')
|
||||
|
||||
! Note: the full name of the sample file is "regular_ll_pl_grib1.tmpl"
|
||||
! Sample files are stored in the samples directory (use codes_info to
|
||||
! see where that is). The default sample path can be changed by
|
||||
! setting the environment variable ECCODES_SAMPLES_PATH
|
||||
call codes_grib_new_from_samples(igrib, 'regular_ll_pl_grib1')
|
||||
|
||||
! Here we're changing the data values only, so the number of values
|
||||
! will be the same as the sample GRIB.
|
||||
! But if your data array has a different size, then specify the grid geometry
|
||||
! (e.g. keys Ni, Nj etc) and set the correct number of data values
|
||||
call codes_get_size(igrib,'values',numberOfValues)
|
||||
|
||||
allocate(values(numberOfValues), stat=iret)
|
||||
d = 10e-8
|
||||
e = d
|
||||
cnt = 1
|
||||
do i=1,numberOfValues
|
||||
if (cnt>100) then
|
||||
e = e*10
|
||||
cnt=1
|
||||
endif
|
||||
values(i) = d
|
||||
!print *, values(i)
|
||||
d = d + e
|
||||
cnt = cnt + 1
|
||||
end do
|
||||
|
||||
call codes_set(igrib, 'bitsPerValue', 16)
|
||||
|
||||
! set data values
|
||||
call codes_set(igrib,'values', values)
|
||||
call codes_write(igrib,outfile)
|
||||
call codes_release(igrib)
|
||||
deallocate(values)
|
||||
|
||||
end program set_data
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
# Copyright 2005-2016 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
|
||||
|
||||
OUT=temp.f_grib_set_data.out.grib
|
||||
|
||||
${examples_dir}eccodes_f_grib_set_data $OUT
|
||||
|
||||
rm -f $OUT
|
|
@ -30,11 +30,11 @@ program grib_set_pv
|
|||
form="formatted",action="read")
|
||||
|
||||
do i=1,numberOfCoefficients,2
|
||||
read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
|
||||
if (ios /= 0) then
|
||||
print *, "I/O error: ",ios
|
||||
exit
|
||||
end if
|
||||
read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
|
||||
if (ios /= 0) then
|
||||
print *, "I/O error: ",ios
|
||||
exit
|
||||
end if
|
||||
end do
|
||||
|
||||
! print coefficients
|
||||
|
@ -46,25 +46,25 @@ program grib_set_pv
|
|||
|
||||
call codes_open_file(outfile, 'out.pv.grib1','w')
|
||||
|
||||
! a new grib message is loaded from file
|
||||
! igrib is the grib id to be used in subsequent calls
|
||||
! A new grib message is loaded from file
|
||||
! igrib is the grib id to be used in subsequent calls
|
||||
call codes_grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
|
||||
|
||||
! set levtype to ml (model level)
|
||||
! set levtype to ml (model level)
|
||||
call codes_set(igrib,'typeOfLevel','hybrid')
|
||||
|
||||
! set level
|
||||
! set level
|
||||
call codes_set(igrib,'level',2)
|
||||
|
||||
! set PVPresent as an integer
|
||||
! set PVPresent as an integer
|
||||
call codes_set(igrib,'PVPresent',1)
|
||||
|
||||
call codes_set(igrib,'pv',pv)
|
||||
|
||||
! write modified message to a file
|
||||
! write modified message to a file
|
||||
call codes_write(igrib,outfile)
|
||||
|
||||
! FREE MEMORY
|
||||
! Free memory
|
||||
call codes_release(igrib)
|
||||
deallocate(pv)
|
||||
|
||||
|
|
Loading…
Reference in New Issue