00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
00042
00043
00044
00045
00046 close(unit=1)
00047
00048 call grib_open_file(outfile, 'out.grib1','w')
00049
00050
00051
00052 call grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
00053
00054
00055 call grib_set(igrib,'levtype','ml')
00056
00057
00058 call grib_set(igrib,'level',2)
00059
00060
00061 call grib_set(igrib,'PVPresent',1)
00062
00063 call grib_set(igrib,'pv',pv)
00064
00065
00066 call grib_write(igrib,outfile)
00067
00068
00069 call grib_release(igrib)
00070 deallocate(pv)
00071
00072 call grib_close_file(outfile)
00073
00074 end program set_pv