26 character(len=*),
intent(in) :: filedate
27 integer(i_kind),
intent(in) :: write_opt
28 character(len=*),
intent(in) :: outdir
30 character(len=512) :: ncfname
31 integer(i_kind),
dimension(n_ncdim) :: ncid_ncdim
32 integer(i_kind),
dimension(n_ncdim) :: val_ncdim
33 character(len=nstring) :: ncname
34 integer(i_kind) :: ncfileid
35 integer(i_kind) :: ntype, nvar
36 integer(i_kind) :: i, ityp, ivar, ii
37 integer(i_kind) :: idim, dim1, dim2
38 character(len=nstring),
allocatable :: str_nstring(:)
39 character(len=ndatetime),
allocatable :: str_ndatetime(:)
40 character(len=nstring),
allocatable :: name_var_tb(:)
41 character(len=nstring) :: str_tmp
42 character(len=4) :: c4
49 write(*,*)
' Error: unknwon write_opt = ', write_opt
56 obtype_loop:
do ityp = 1, ntype
58 if (
xdata(ityp)%nlocs == 0 ) cycle obtype_loop
61 ncfname = trim(outdir)//trim(
obtype_list(ityp))//
'_obs_'//trim(filedate)//
'.nc4'
63 ncfname = trim(outdir)//trim(
inst_list(ityp))//
'_obs_'//trim(filedate)//
'.nc4'
64 allocate (name_var_tb(
xdata(ityp)%nvars))
66 write(*,*)
'--- writing ', trim(ncfname)
69 val_ncdim(1) =
xdata(ityp)%nvars
70 val_ncdim(2) =
xdata(ityp)%nlocs
71 val_ncdim(3) =
xdata(ityp)%nrecs
79 do i = 1,
xdata(ityp) % nvars
81 ivar =
xdata(ityp) % var_idx(i)
91 write(unit=c4, fmt=
'(i4)') i
92 name_var_tb(i) = trim(var_tb)//
'_'//trim(adjustl(c4))
93 ncname = trim(name_var_tb(i))//
'@ObsValue'
94 call def_netcdf_var(ncfileid,ncname,(/ncid_ncdim(2)/),nf90_float,
'units',
'K')
95 ncname = trim(name_var_tb(i))//
'@ObsError'
97 ncname = trim(name_var_tb(i))//
'@PreQC'
108 dim1 = ncid_ncdim(idim)
111 dim2 = ncid_ncdim(idim)
125 dim1 = ncid_ncdim(idim)
128 dim2 = ncid_ncdim(idim)
139 var_loop:
do i = 1,
xdata(ityp) % nvars
141 ivar =
xdata(ityp) % var_idx(i)
153 ncname = trim(name_var_tb(i))//
'@ObsValue'
155 ncname = trim(name_var_tb(i))//
'@ObsError'
157 ncname = trim(name_var_tb(i))//
'@PreQC'
179 allocate(str_nstring(val_ncdim(2)))
180 str_nstring(:) =
xdata(ityp)%xinfo_char(:,i)
182 deallocate(str_nstring)
184 allocate(str_ndatetime(val_ncdim(2)))
185 do ii = 1, val_ncdim(2)
186 str_tmp =
xdata(ityp)%xinfo_char(ii,i)
190 deallocate(str_ndatetime)
210 deallocate (name_var_tb)
219 if (
allocated(
xdata(i)%var_idx) )
deallocate(
xdata(i)%var_idx)
220 if (
allocated(
xdata(i)%xfield) )
deallocate(
xdata(i)%xfield)
221 if (
allocated(
xdata(i)%xinfo_int) )
deallocate(
xdata(i)%xinfo_int)
222 if (
allocated(
xdata(i)%xinfo_float) )
deallocate(
xdata(i)%xinfo_float)
223 if (
allocated(
xdata(i)%xinfo_char) )
deallocate(
xdata(i)%xinfo_char)
224 if (
allocated(
xdata(i)%xseninfo_int) )
deallocate(
xdata(i)%xseninfo_int)
225 if (
allocated(
xdata(i)%xseninfo_float) )
deallocate(
xdata(i)%xseninfo_float)
226 if (
allocated(
xdata(i)%xseninfo_char) )
deallocate(
xdata(i)%xseninfo_char)
integer(i_kind), parameter nstring
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
integer(i_kind), parameter ifalse
integer(i_kind), parameter write_nc_conv
integer(i_kind), parameter ninst
integer(i_kind), parameter nsen_info
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
character(len=nstring), dimension(ninst) inst_list
type(xdata_type), dimension(:), allocatable xdata
integer(i_kind), dimension(nvar_met, nobtype) vflag
integer(i_kind), parameter n_ncdim
character(len=nstring), dimension(nvar_met) unit_var_met
integer(i_kind), dimension(nvar_info) type_var_info
character(len=nstring), dimension(2, nvar_info) dim_var_info
integer, parameter, public r_single
integer, parameter, public i_kind
integer, parameter, public r_kind
subroutine, public write_obs(filedate, write_opt, outdir)
subroutine, public close_netcdf(fname, ncfileid)
subroutine, public get_netcdf_dims(fileid, variable, output)
subroutine, public def_netcdf_dims(fileid, variable, input, output)
subroutine, public open_netcdf_for_write(fname, ncfileid)
subroutine, public def_netcdf_end(fileid)
subroutine, public def_netcdf_var(fileid, variable, dimids, nctype, attrib_name, attrib)
integer function, public ufo_vars_getindex(vars, varname)