5 use netcdf,
only: nf90_float, nf90_int, nf90_char
12 integer(i_kind),
parameter ::
not_use = 100
13 integer(i_kind),
parameter ::
itrue = 1
14 integer(i_kind),
parameter ::
ifalse = 0
15 integer(i_kind),
parameter ::
nstring = 50
22 integer(i_kind),
parameter ::
ninst = 12
49 integer(i_kind),
dimension(nvar_met,nobtype) ::
vflag = reshape ( &
70 character(len=nstring),
dimension(ninst) ::
inst_list = &
88 character(len=nstring),
dimension(n_ncdim) ::
name_ncdim = &
100 'station_elevation', &
120 character(len=nstring),
dimension(2,nvar_info) ::
dim_var_info = reshape ( &
128 'ndatetime ',
'nlocs ', &
129 'nstring ',
'nlocs ', &
130 'nstring ',
'nvars ' &
134 'solar_azimuth_angle ', &
136 'sensor_azimuth_angle', &
137 'solar_zenith_angle ', &
138 'sensor_zenith_angle ', &
139 'sensor_view_angle ', &
152 character(len=nstring),
dimension(2,nsen_info) ::
dim_sen_info = reshape ( &
166 integer(i_kind) :: qm
168 integer(i_kind) :: rptype
172 integer(i_kind) :: nvars
173 integer(i_kind) :: nrecs
174 integer(i_kind) :: nlocs
175 integer(i_kind),
allocatable,
dimension(:) :: var_idx
177 real(
r_kind),
allocatable,
dimension(:,:) :: xinfo_float
178 integer(i_kind),
allocatable,
dimension(:,:) :: xinfo_int
179 character(len=nstring),
allocatable,
dimension(:,:) :: xinfo_char
180 real(
r_kind),
allocatable,
dimension(:,:) :: xseninfo_float
181 integer(i_kind),
allocatable,
dimension(:,:) :: xseninfo_int
182 character(len=nstring),
allocatable,
dimension(:,:) :: xseninfo_char
198 integer(i_kind),
intent(in) :: t29
199 character(len=*),
intent(out) :: obtype
204 case (11, 12, 13, 22, 23, 31)
217 case (531, 532, 561, 562, 534)
228 case (581, 582, 583, 584)
236 case (71, 73, 75, 76)
252 integer(i_kind),
intent(in) :: satid
253 character(len=*),
intent(out) :: satellite
255 satellite =
'unknown'
257 select case ( satid )
258 case ( 3 ); satellite =
'metop-b'
259 case ( 4 ); satellite =
'metop-a'
260 case ( 5 ); satellite =
'metop-c'
261 case ( 206 ); satellite =
'n15'
262 case ( 207 ); satellite =
'n16'
263 case ( 208 ); satellite =
'n17'
264 case ( 209 ); satellite =
'n18'
265 case ( 223 ); satellite =
'n19'
266 case ( 224 ); satellite =
'npp'
267 case ( 225 ); satellite =
'n20'
268 case ( 226 ); satellite =
'n21'
269 case ( 783 ); satellite =
'terra'
270 case ( 784 ); satellite =
'aqua'
283 integer(i_kind),
intent(in) :: instid
284 character(len=*),
intent(out) :: sensor
288 select case ( instid )
289 case ( 570 ); sensor =
'amsua'
290 case ( 574 ); sensor =
'amsub'
291 case ( 203 ); sensor =
'mhs'
292 case ( 617 ); sensor =
'abi'
293 case ( 297 ); sensor =
'ahi'
294 case ( 207 ); sensor =
'seviri'
295 case ( 420 ); sensor =
'airs'
296 case ( 620 ); sensor =
'cris'
297 case ( 221 ); sensor =
'iasi'
298 case ( 389 ); sensor =
'modis'
299 case ( 616 ); sensor =
'viirs'
312 character(len=*),
intent(in) :: name_inst
313 integer(i_kind),
intent(in) :: ichan
314 real(r_kind),
intent(out) :: obserr
316 integer(i_kind) :: nchan
317 real(r_kind),
allocatable,
dimension(:) :: obserrors
321 if ( name_inst(1:5) ==
'amsua' )
then
323 allocate(obserrors(nchan))
324 select case ( trim(name_inst) )
326 obserrors = (/ 3.0, 2.2, 2.0, 0.6, 0.3, 0.23, 0.25, 0.275, 0.34, 0.4, 0.6, 1.0, 1.5, 2.0, 3.5 /)
328 obserrors = (/ 2.5, 2.2, 2.0, 0.55, 0.3, 0.23, 0.23, 0.25, 0.25, 0.35, 0.4, 0.55, 0.8, 3.0, 3.5 /)
330 obserrors = (/ 2.5, 2.2, 2.0, 0.55, 0.3, 0.23, 0.23, 0.25, 0.25, 0.35, 0.4, 0.55, 0.8, 3.0, 3.5 /)
331 case (
'amsua_metop-b' )
332 obserrors = (/ 2.5, 2.2, 2.0, 0.55, 0.3, 0.23, 0.23, 0.25, 0.25, 0.35, 0.4, 0.55, 0.8, 3.0, 3.5 /)
333 case (
'amsua_metop-a' )
334 obserrors = (/ 2.5, 2.2, 2.0, 0.55, 0.3, 0.23, 0.23, 0.25, 0.25, 0.35, 0.4, 0.55, 0.8, 3.0, 3.5 /)
335 case (
'amsua_metop-c' )
336 obserrors = (/ 2.5, 2.2, 2.0, 0.55, 0.3, 0.23, 0.23, 0.25, 0.25, 0.35, 0.4, 0.55, 0.8, 3.0, 3.5 /)
337 case (
'amsua_aqua' )
338 obserrors = (/ 2.5, 2.0, 2.0, 0.5, 0.4, 0.4, 0.5, 0.3, 0.35, 0.35, 0.45, 1.0, 1.5, 2.5, 2.5 /)
342 else if ( name_inst(1:3) ==
'mhs' )
then
344 allocate(obserrors(nchan))
345 select case ( trim(name_inst) )
347 obserrors = (/ 2.5, 2.5, 2.5, 2.0, 2.0 /)
349 obserrors = (/ 2.5, 2.5, 2.5, 2.0, 2.0 /)
350 case (
'mhs_metop-a' )
351 obserrors = (/ 2.5, 2.5, 2.5, 2.0, 2.0 /)
352 case (
'mhs_metop-b' )
353 obserrors = (/ 2.5, 2.5, 2.5, 2.0, 2.0 /)
354 case (
'mhs_metop-c' )
355 obserrors = (/ 2.5, 2.5, 2.5, 2.0, 2.0 /)
363 obserr = obserrors(ichan)
365 deallocate(obserrors)
integer(i_kind), parameter nstring
integer(i_kind), parameter nvar_met
integer(i_kind), parameter write_nc_radiance
character(len=nstring), dimension(nobtype) obtype_list
character(len=nstring), dimension(2, nsen_info) dim_sen_info
character(len=nstring), dimension(nvar_info) name_var_info
integer(i_kind), parameter nobtype
integer(i_kind), dimension(nsen_info) type_sen_info
integer(i_kind), parameter itrue
character(len=nstring), dimension(n_ncdim) name_ncdim
subroutine set_name_sensor(instid, sensor)
real(r_kind), parameter t_kelvin
integer(i_kind), parameter ifalse
integer(i_kind), parameter write_nc_conv
integer(i_kind), parameter not_use
integer(i_kind), parameter ninst
integer(i_kind), parameter nsen_info
integer(i_kind), parameter missing_i
integer(i_kind), parameter ndatetime
character(len=nstring), dimension(nsen_info) name_sen_info
integer(i_kind), parameter nvar_info
character(len=nstring), dimension(nvar_met) name_var_met
subroutine set_obtype_conv(t29, obtype)
real(r_kind), parameter missing_r
character(len=nstring), dimension(ninst) inst_list
type(xdata_type), dimension(:), allocatable xdata
integer(i_kind), dimension(nvar_met, nobtype) vflag
subroutine set_name_satellite(satid, satellite)
integer(i_kind), parameter n_ncdim
character(len=nstring), dimension(nvar_met) unit_var_met
subroutine set_brit_obserr(name_inst, ichan, obserr)
integer(i_kind), dimension(nvar_info) type_var_info
character(len=nstring), dimension(2, nvar_info) dim_var_info
integer, parameter, public i_kind
integer, parameter, public r_kind
character(len=maxvarlen), parameter, public var_prs
character(len=maxvarlen), parameter, public var_q
character(len=maxvarlen), parameter, public var_v
character(len=maxvarlen), parameter, public var_tb
character(len=maxvarlen), parameter, public var_ts
character(len=maxvarlen), parameter, public var_u
character(len=maxvarlen), parameter, public var_ps
character(len=maxvarlen), parameter, public var_tv