12 integer(i_kind),
parameter :: strlen = 512
13 integer(i_kind),
parameter :: namelen = 64
14 integer(i_kind),
parameter :: datelen = 10
15 integer(i_kind),
parameter :: nfile_all = 5
16 integer(i_kind),
parameter :: ftype_unknown = -1
17 integer(i_kind),
parameter :: ftype_prepbufr = 1
18 integer(i_kind),
parameter :: ftype_gnssro = 2
19 integer(i_kind),
parameter :: ftype_amsua = 3
20 integer(i_kind),
parameter :: ftype_mhs = 4
21 integer(i_kind),
parameter :: ftype_airs = 5
23 integer(i_kind) :: ftype(nfile_all)
24 character(len=NameLen) :: flist_all(nfile_all) = &
32 character (len=NameLen) :: flist(nfile_all)
33 character (len=NameLen) :: filename
34 character (len=DateLen) :: filedate
35 character (len=StrLen) :: inpdir, outdir
37 logical :: do_radiance
38 logical :: apply_gsi_qc
39 integer(i_kind) :: nfile, ifile
40 integer(i_kind) :: itmp
44 apply_gsi_qc = .false.
50 filename = flist(ifile)
52 if ( ftype(ifile) == ftype_gnssro )
then
53 inquire(file=trim(inpdir)//trim(filename), exist=fexist)
54 if ( .not. fexist )
then
55 write(*,*)
'Warning: ', trim(inpdir)//trim(filename),
' not found for decoding...'
57 write(*,*)
'--- processing gnssro.bufr ---'
62 if ( ftype(ifile) == ftype_prepbufr )
then
63 inquire(file=trim(inpdir)//trim(filename), exist=fexist)
64 if ( .not. fexist )
then
65 write(*,*)
'Warning: ', trim(inpdir)//trim(filename),
' not found for decoding...'
70 if ( apply_gsi_qc )
then
71 write(*,*)
'--- applying some additional QC as in GSI read_prepbufr.f90 for the global model ---'
83 if ( ftype(ifile) == ftype_amsua )
then
84 inquire(file=trim(inpdir)//trim(filename), exist=fexist)
85 if ( .not. fexist )
then
86 write(*,*)
'Warning: ', trim(inpdir)//trim(filename),
' not found for decoding...'
94 if ( ftype(ifile) == ftype_airs )
then
95 inquire(file=trim(inpdir)//trim(filename), exist=fexist)
96 if ( .not. fexist )
then
97 write(*,*)
'Warning: ', trim(inpdir)//trim(filename),
' not found for decoding...'
105 if ( ftype(ifile) == ftype_mhs )
then
106 inquire(file=trim(inpdir)//trim(filename), exist=fexist)
107 if ( .not. fexist )
then
108 write(*,*)
'Warning: ', trim(inpdir)//trim(filename),
' not found for decoding...'
118 if ( do_radiance )
then
126 write(6,*)
'all done!'
134 integer(i_kind) :: iunit = 21
135 integer(i_kind) :: narg, iarg, iarg_inpdir, iarg_outdir
136 integer(i_kind) :: itmp
137 integer(i_kind) :: iost, iret, idate
138 character(len=StrLen) :: strtmp
139 character(len=8) :: subset
141 narg = command_argument_count()
148 call get_command_argument(number=iarg,
value=strtmp)
149 if ( trim(strtmp) ==
'-qc' )
then
150 apply_gsi_qc = .true.
151 else if ( trim(strtmp) ==
'-i' )
then
152 iarg_inpdir = iarg + 1
153 else if ( trim(strtmp) ==
'-o' )
then
154 iarg_outdir = iarg + 1
156 if ( iarg == iarg_inpdir )
then
157 call get_command_argument(number=iarg,
value=inpdir)
158 else if ( iarg == iarg_outdir )
then
159 call get_command_argument(number=iarg,
value=outdir)
162 call get_command_argument(number=iarg,
value=flist(ifile))
166 if ( ifile == 0 )
then
168 flist(:) = flist_all(:)
169 ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs /)
177 flist(:) = flist_all(:)
178 ftype(:) = (/ ftype_gnssro, ftype_prepbufr, ftype_amsua, ftype_airs, ftype_mhs /)
181 itmp = len_trim(inpdir)
182 if ( inpdir(itmp:itmp) /=
'/' ) inpdir = trim(inpdir)//
'/'
183 itmp = len_trim(outdir)
184 if ( outdir(itmp:itmp) /=
'/' ) outdir = trim(outdir)//
'/'
187 if ( narg == 0 .or. ifile == 0 )
return
190 fileloop:
do ifile = 1, nfile
191 if ( trim(flist(ifile)) ==
'null' )
then
192 ftype(ifile) = ftype_unknown
195 open(unit=iunit, file=trim(inpdir)//trim(flist(ifile)), form=
'unformatted', iostat=iost, status=
'old')
196 call openbf(iunit,
'IN', iunit)
197 call readmg(iunit,subset,idate,iret)
198 select case ( trim(subset) )
199 case (
'ADPUPA',
'ADPSFC' )
200 ftype(ifile) = ftype_prepbufr
202 ftype(ifile) = ftype_gnssro
204 ftype(ifile) = ftype_amsua
206 ftype(ifile) = ftype_mhs
208 ftype(ifile) = ftype_airs
210 ftype(ifile) = ftype_unknown
subroutine parse_files_to_convert
integer(i_kind), parameter write_nc_radiance
integer(i_kind), parameter write_nc_conv
subroutine read_write_gnssro(infile, outdir)
integer, parameter, public i_kind
subroutine, public write_obs(filedate, write_opt, outdir)
subroutine, public sort_obs_conv
subroutine, public read_prepbufr(filename, filedate)
subroutine, public filter_obs_conv
subroutine, public sort_obs_radiance
subroutine, public read_amsua_amsub_mhs(filename, filedate)
subroutine, public read_airs_colocate_amsua(filename, filedate)