get.f90

How to get values through the key names.

00001 ! Copyright 2005-2007 ECMWF
00002 ! 
00003 ! Licensed under the GNU Lesser General Public License which
00004 ! incorporates the terms and conditions of version 3 of the GNU
00005 ! General Public License.
00006 ! See LICENSE and gpl-3.0.txt for details.
00007 !
00008 !
00009 !  Description: how to get values using keys.
00010 !
00011 !  Author: Enrico Fucile 
00012 !
00013 !
00014 program get
00015   use grib_api
00016   implicit none
00017   
00018   integer                            ::  ifile
00019   integer                            ::  iret
00020   integer                            ::  igrib
00021   real                               ::  latitudeOfFirstPointInDegrees
00022   real                               ::  longitudeOfFirstPointInDegrees
00023   real                               ::  latitudeOfLastPointInDegrees
00024   real                               ::  longitudeOfLastPointInDegrees
00025   integer                            ::  numberOfPointsAlongAParallel
00026   integer                            ::  numberOfPointsAlongAMeridian
00027   real, dimension(:), allocatable    ::  values
00028   integer                            ::  numberOfValues
00029   real                               ::  average,min_val, max_val
00030   
00031   call grib_open_file(ifile, &
00032        '../../data/regular_latlon_surface.grib1','r')
00033   
00034   ! Loop on all the messages in a file.
00035   
00036   !     a new grib message is loaded from file
00037   !     igrib is the grib id to be used in subsequent calls
00038   call  grib_new_from_file(ifile,igrib, iret) 
00039   
00040   LOOP: DO WHILE (iret /= GRIB_END_OF_FILE)
00041 
00042      !     get as a integer
00043      call grib_get(igrib,'numberOfPointsAlongAParallel', &
00044           numberOfPointsAlongAParallel) 
00045      write(*,*) 'numberOfPointsAlongAParallel=', &
00046           numberOfPointsAlongAParallel
00047      
00048      !     get as a integer
00049      call grib_get(igrib,'numberOfPointsAlongAMeridian', &
00050           numberOfPointsAlongAMeridian) 
00051      write(*,*) 'numberOfPointsAlongAMeridian=', &
00052           numberOfPointsAlongAMeridian
00053      
00054      !     get as a real
00055      call grib_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
00056           latitudeOfFirstPointInDegrees) 
00057      write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
00058           latitudeOfFirstPointInDegrees
00059      
00060      !     get as a real
00061      call grib_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
00062           longitudeOfFirstPointInDegrees) 
00063      write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
00064           longitudeOfFirstPointInDegrees
00065      
00066      !     get as a real
00067      call grib_get(igrib, 'latitudeOfLastGridPointInDegrees', &
00068           latitudeOfLastPointInDegrees) 
00069      write(*,*) 'latitudeOfLastGridPointInDegrees=', &
00070           latitudeOfLastPointInDegrees
00071      
00072      !     get as a real
00073      call grib_get(igrib, 'longitudeOfLastGridPointInDegrees', &
00074           longitudeOfLastPointInDegrees) 
00075      write(*,*) 'longitudeOfLastGridPointInDegrees=', &
00076           longitudeOfLastPointInDegrees
00077      
00078      
00079      !     get the size of the values array
00080      call grib_get_size(igrib,'values',numberOfValues)
00081      write(*,*) 'numberOfValues=',numberOfValues
00082      
00083      allocate(values(numberOfValues), stat=iret)
00084      !     get data values
00085      call grib_get(igrib,'values',values)
00086      call grib_get(igrib,'min',min_val) ! can also be obtained through minval(values)
00087      call grib_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
00088      call grib_get(igrib,'average',average) ! can also be obtained through maxval(values)
00089           
00090      write(*,*)'There are ',numberOfValues, &
00091           ' average is ',average, &
00092           ' min is ',  min_val, &
00093           ' max is ',  max_val
00094      
00095      call grib_release(igrib)
00096      
00097      call grib_new_from_file(ifile,igrib, iret)
00098      
00099   end do LOOP
00100   
00101   call grib_close_file(ifile)
00102   
00103   deallocate(values)
00104 end program get

Generated on Tue Jul 8 10:17:28 2008 for grib_api by  doxygen 1.5.4