00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
00035
00036
00037
00038 call grib_new_from_file(ifile,igrib, iret)
00039
00040 LOOP: DO WHILE (iret /= GRIB_END_OF_FILE)
00041
00042
00043 call grib_get(igrib,'numberOfPointsAlongAParallel', &
00044 numberOfPointsAlongAParallel)
00045 write(*,*) 'numberOfPointsAlongAParallel=', &
00046 numberOfPointsAlongAParallel
00047
00048
00049 call grib_get(igrib,'numberOfPointsAlongAMeridian', &
00050 numberOfPointsAlongAMeridian)
00051 write(*,*) 'numberOfPointsAlongAMeridian=', &
00052 numberOfPointsAlongAMeridian
00053
00054
00055 call grib_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
00056 latitudeOfFirstPointInDegrees)
00057 write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
00058 latitudeOfFirstPointInDegrees
00059
00060
00061 call grib_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
00062 longitudeOfFirstPointInDegrees)
00063 write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
00064 longitudeOfFirstPointInDegrees
00065
00066
00067 call grib_get(igrib, 'latitudeOfLastGridPointInDegrees', &
00068 latitudeOfLastPointInDegrees)
00069 write(*,*) 'latitudeOfLastGridPointInDegrees=', &
00070 latitudeOfLastPointInDegrees
00071
00072
00073 call grib_get(igrib, 'longitudeOfLastGridPointInDegrees', &
00074 longitudeOfLastPointInDegrees)
00075 write(*,*) 'longitudeOfLastGridPointInDegrees=', &
00076 longitudeOfLastPointInDegrees
00077
00078
00079
00080 call grib_get_size(igrib,'values',numberOfValues)
00081 write(*,*) 'numberOfValues=',numberOfValues
00082
00083 allocate(values(numberOfValues), stat=iret)
00084
00085 call grib_get(igrib,'values',values)
00086 call grib_get(igrib,'min',min_val)
00087 call grib_get(igrib,'max',max_val)
00088 call grib_get(igrib,'average',average)
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