2013-04-02 14:02:10 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html > < head > < meta http-equiv = "Content-Type" content = "text/html;charset=UTF-8" >
< title > grib_api: get_fortran.F< / title >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" >
< / head > < body >
<!-- Generated by Doxygen 1.5.3 -->
< div class = "tabs" >
< ul >
< li > < a href = "index.html" > < span > Main Page< / span > < / a > < / li >
< li > < a href = "modules.html" > < span > Modules< / span > < / a > < / li >
< li > < a href = "files.html" > < span > Files< / span > < / a > < / li >
< li > < a href = "pages.html" > < span > Related Pages< / span > < / a > < / li >
< li > < a href = "examples.html" > < span > Examples< / span > < / a > < / li >
< / ul >
< / div >
< h1 > get_fortran.F< / h1 > get_fortran.F How to get values through the key names.< p >
2014-01-03 16:22:21 +00:00
< div class = "fragment" > < pre class = "fragment" > < a name = "l00001" > < / a > 00001 C Copyright 2005-2014 ECMWF
2013-04-02 14:02:10 +00:00
< a name = "l00002" > < / a > 00002 C This software is licensed under the terms of the Apache Licence Version 2.0
< a name = "l00003" > < / a > 00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
< a name = "l00004" > < / a > 00004 C
< a name = "l00005" > < / a > 00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
< a name = "l00006" > < / a > 00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
< a name = "l00007" > < / a > 00007 C
< a name = "l00008" > < / a > 00008 C Fortran 77 Implementation: get_fortran
< a name = "l00009" > < / a > 00009 C
< a name = "l00010" > < / a > 00010 C Description: how to < span class = "keyword" > get< / span > values < span class = "keyword" > using< / span > keys.
< a name = "l00011" > < / a > 00011 C
< a name = "l00012" > < / a > 00012 C Author: Enrico Fucile
< a name = "l00013" > < / a > 00013 C
< a name = "l00014" > < / a > 00014 C
< a name = "l00015" > < / a > 00015 C
< a name = "l00016" > < / a > 00016 program < span class = "keyword" > get< / span >
< a name = "l00017" > < / a > 00017 implicit none
< a name = "l00018" > < / a > 00018 integer maxNumberOfValues
< a name = "l00019" > < / a > 00019 parameter( maxNumberOfValues = 10000 )
< a name = "l00020" > < / a > 00020 include 'grib_api_f77.h'
< a name = "l00021" > < / a > 00021 integer ifile
< a name = "l00022" > < / a > 00022 integer iret
< a name = "l00023" > < / a > 00023 integer igrib
< a name = "l00024" > < / a > 00024 integer i
< a name = "l00025" > < / a > 00025 real*8 latitudeOfFirstPointInDegrees
< a name = "l00026" > < / a > 00026 real*8 longitudeOfFirstPointInDegrees
< a name = "l00027" > < / a > 00027 real*8 latitudeOfLastPointInDegrees
< a name = "l00028" > < / a > 00028 real*8 longitudeOfLastPointInDegrees
< a name = "l00029" > < / a > 00029 real*8 jDirectionIncrementInDegrees
< a name = "l00030" > < / a > 00030 real*8 iDirectionIncrementInDegrees
< a name = "l00031" > < / a > 00031 integer*4 numberOfPointsAlongAParallel
< a name = "l00032" > < / a > 00032 integer*4 numberOfPointsAlongAMeridian
< a name = "l00033" > < / a > 00033 real*8 values(maxNumberOfValues)
< a name = "l00034" > < / a > 00034 integer*4 numberOfValues
< a name = "l00035" > < / a > 00035 real*8 average
< a name = "l00036" > < / a > 00036 character*256 error
< a name = "l00037" > < / a > 00037 integer*4 size
< a name = "l00038" > < / a > 00038
< a name = "l00039" > < / a > 00039 size=maxNumberOfValues
< a name = "l00040" > < / a > 00040 ifile=5
< a name = "l00041" > < / a > 00041
< a name = "l00042" > < / a > 00042 iret=grib_open_file(ifile
< a name = "l00043" > < / a > 00043 X,'../../data/regular_latlon_surface.grib1','r')
< a name = "l00044" > < / a > 00044 call grib_check(iret)
< a name = "l00045" > < / a > 00045
< a name = "l00046" > < / a > 00046 C a new grib message is loaded from file
< a name = "l00047" > < / a > 00047 C igrib is the grib < span class = "keywordtype" > id< / span > to be used in subsequent calls
< a name = "l00048" > < / a > 00048 call grib_check( grib_new_from_file(ifile,igrib) )
< a name = "l00049" > < / a > 00049
< a name = "l00050" > < / a > 00050 C get as a integer
< a name = "l00051" > < / a > 00051 call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel'
< a name = "l00052" > < / a > 00052 X,numberOfPointsAlongAParallel) )
< a name = "l00053" > < / a > 00053 write(*,*) 'numberOfPointsAlongAParallel='
< a name = "l00054" > < / a > 00054 X,numberOfPointsAlongAParallel
< a name = "l00055" > < / a > 00055
< a name = "l00056" > < / a > 00056 C get as a integer
< a name = "l00057" > < / a > 00057 call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian'
< a name = "l00058" > < / a > 00058 X,numberOfPointsAlongAMeridian) )
< a name = "l00059" > < / a > 00059 write(*,*) 'numberOfPointsAlongAMeridian='
< a name = "l00060" > < / a > 00060 X,numberOfPointsAlongAMeridian
< a name = "l00061" > < / a > 00061
< a name = "l00062" > < / a > 00062 C get as a real8
< a name = "l00063" > < / a > 00063 call grib_check( grib_get_real8(igrib
< a name = "l00064" > < / a > 00064 X,'latitudeOfFirstGridPointInDegrees'
< a name = "l00065" > < / a > 00065 X,latitudeOfFirstPointInDegrees) )
< a name = "l00066" > < / a > 00066 write(*,*) 'latitudeOfFirstGridPointInDegrees='
< a name = "l00067" > < / a > 00067 X,latitudeOfFirstPointInDegrees
< a name = "l00068" > < / a > 00068
< a name = "l00069" > < / a > 00069 C get as a real8
< a name = "l00070" > < / a > 00070 call grib_check( grib_get_real8(igrib
< a name = "l00071" > < / a > 00071 X,'longitudeOfFirstGridPointInDegrees'
< a name = "l00072" > < / a > 00072 X,longitudeOfFirstPointInDegrees) )
< a name = "l00073" > < / a > 00073 write(*,*) 'longitudeOfFirstGridPointInDegrees='
< a name = "l00074" > < / a > 00074 X,longitudeOfFirstPointInDegrees
< a name = "l00075" > < / a > 00075
< a name = "l00076" > < / a > 00076 C get as a real8
< a name = "l00077" > < / a > 00077 call grib_check( grib_get_real8(igrib
< a name = "l00078" > < / a > 00078 X,'latitudeOfLastGridPointInDegrees'
< a name = "l00079" > < / a > 00079 X,latitudeOfLastPointInDegrees) )
< a name = "l00080" > < / a > 00080 write(*,*) 'latitudeOfLastGridPointInDegrees='
< a name = "l00081" > < / a > 00081 X,latitudeOfLastPointInDegrees
< a name = "l00082" > < / a > 00082
< a name = "l00083" > < / a > 00083 C get as a real8
< a name = "l00084" > < / a > 00084 call grib_check( grib_get_real8(igrib
< a name = "l00085" > < / a > 00085 X,'longitudeOfLastGridPointInDegrees'
< a name = "l00086" > < / a > 00086 X,longitudeOfLastPointInDegrees) )
< a name = "l00087" > < / a > 00087 write(*,*) 'longitudeOfLastGridPointInDegrees='
< a name = "l00088" > < / a > 00088 X,longitudeOfLastPointInDegrees
< a name = "l00089" > < / a > 00089
< a name = "l00090" > < / a > 00090 C get as a real8
< a name = "l00091" > < / a > 00091 call grib_check( grib_get_real8(igrib
< a name = "l00092" > < / a > 00092 X,'jDirectionIncrementInDegrees'
< a name = "l00093" > < / a > 00093 X,jDirectionIncrementInDegrees) )
< a name = "l00094" > < / a > 00094 write(*,*) 'jDirectionIncrementInDegrees='
< a name = "l00095" > < / a > 00095 X,jDirectionIncrementInDegrees
< a name = "l00096" > < / a > 00096
< a name = "l00097" > < / a > 00097 C get as a real8
< a name = "l00098" > < / a > 00098 call grib_check( grib_get_real8(igrib
< a name = "l00099" > < / a > 00099 X,'iDirectionIncrementInDegrees'
< a name = "l00100" > < / a > 00100 X,iDirectionIncrementInDegrees) )
< a name = "l00101" > < / a > 00101 write(*,*) 'iDirectionIncrementInDegrees='
< a name = "l00102" > < / a > 00102 X,iDirectionIncrementInDegrees
< a name = "l00103" > < / a > 00103
< a name = "l00104" > < / a > 00104 C get the size of the values array
< a name = "l00105" > < / a > 00105 call grib_check(< a name = "a0" > < / a > < a class = "code" href = "group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title = "Get the number of coded value from a key, if several keys of the same name are present..." > grib_get_size< / a > (igrib,'values',numberOfValues))
< a name = "l00106" > < / a > 00106 write(*,*) 'numberOfValues=',numberOfValues
< a name = "l00107" > < / a > 00107
< a name = "l00108" > < / a > 00108 C get data values
< a name = "l00109" > < / a > 00109 call grib_check(grib_get_real8_array(igrib,'values',values,size))
< a name = "l00110" > < / a > 00110 if ( size .ne. numberOfValues ) then
< a name = "l00111" > < / a > 00111 write(*,*) 'ERROR: wrong numberOfValues'
< a name = "l00112" > < / a > 00112 stop
< a name = "l00113" > < / a > 00113 endif
< a name = "l00114" > < / a > 00114
< a name = "l00115" > < / a > 00115 average = 0
< a name = "l00116" > < / a > 00116 do i=1,numberOfValues
< a name = "l00117" > < / a > 00117 average = average + values(i);
< a name = "l00118" > < / a > 00118 enddo
< a name = "l00119" > < / a > 00119
< a name = "l00120" > < / a > 00120 average =average / numberOfValues
< a name = "l00121" > < / a > 00121
< a name = "l00122" > < / a > 00122 write(*,*)'There are ',numberOfValues
< a name = "l00123" > < / a > 00123 X,' average is ',average
< a name = "l00124" > < / a > 00124
< a name = "l00125" > < / a > 00125 call grib_check(grib_release(igrib))
< a name = "l00126" > < / a > 00126
< a name = "l00127" > < / a > 00127 call grib_check(grib_close_file(ifile))
< a name = "l00128" > < / a > 00128
< a name = "l00129" > < / a > 00129 end
< / pre > < / div > < hr size = "1" > < address style = "text-align: right;" > < small > Generated on Tue Sep 22 15:18:21 2009 for grib_api by
< a href = "http://www.doxygen.org/index.html" >
< img src = "doxygen.png" alt = "doxygen" align = "middle" border = "0" > < / a > 1.5.3 < / small > < / address >
< / body >
< / html >