grib_api: set_pv.f90

- Main Page
- Modules
- Files
- Related Pages
- Examples

# set_pv.f90

How to set the list of levels.

    00001 ! Copyright 2005-2015 ECMWF
    00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
    00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
    00004 !
    00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
    00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
    00007 !
    00008 !
    00009 !  Description: how to set pv values.
    00010 !
    00011 !
    00012 !  Author: Anne Fouilloux
    00013 !
    00014 !
    00015 program set_pv
    00016   use grib_api
    00017   implicit none
    00018   integer                         :: numberOfLevels
    00019   integer                         :: numberOfCoefficients
    00020   integer                         :: outfile, igrib
    00021   integer                         :: i, ios
    00022   real, dimension(:),allocatable  :: pv
    00023
    00024   numberOfLevels=60
    00025   numberOfCoefficients=2*(numberOfLevels+1)
    00026
    00027   allocate(pv(numberOfCoefficients))
    00028
    00029   ! read the model level coefficients from file
    00030   open( unit=1, file="../../data/60_model_levels", &
    00031                 form="formatted",action="read")
    00032
    00033   do i=1,numberOfCoefficients,2
    00034      read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
    00035      if (ios /= 0) then
    00036         print *, "I/O error: ",ios
    00037         exit
    00038      end if
    00039   end do
    00040
    00041   ! print coefficients
    00042   !do i=1,numberOfCoefficients,2
    00043   !  print *,"  a=",pv(i)," b=",pv(i+1)
    00044   !end do
    00045
    00046   close(unit=1)
    00047
    00048   call grib_open_file(outfile, 'out.grib1','w')
    00049
    00050   !     a new grib message is loaded from file
    00051   !     igrib is the grib id to be used in subsequent calls
    00052   call grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
    00053
    00054   !     set levtype to ml (model level)
    00055   call grib_set(igrib,'levtype','ml')
    00056
    00057   !     set level
    00058   call grib_set(igrib,'level',2)
    00059
    00060   !     set PVPresent as an integer
    00061   call grib_set(igrib,'PVPresent',1)
    00062
    00063   call grib_set(igrib,'pv',pv)
    00064
    00065   !     write modified message to a file
    00066   call grib_write(igrib,outfile)
    00067
    00068   !  FREE MEMORY
    00069   call grib_release(igrib)
    00070   deallocate(pv)
    00071
    00072   call grib_close_file(outfile)
    00073
    00074 end program set_pv