11 use oops_variables_mod
20 type(oops_variables),
public :: obsvars
21 type(oops_variables),
public :: geovars
22 character(len=MAXVARLEN),
public :: v_coord
34 use fckit_configuration_module,
only: fckit_configuration
38 type(fckit_configuration),
intent(in) :: yaml_conf
40 character(kind=c_char,len=:),
allocatable :: coord_name
44 if( yaml_conf%has(
"VertCoord") )
then
45 call yaml_conf%get_or_die(
"VertCoord",coord_name)
46 self%v_coord = coord_name
47 if( trim(self%v_coord) .ne.
var_z )
then
48 call abor1_ftn(
"ufo_radarreflectivity: incorrect vertical coordinate specified")
54 call self%geovars%push_back(self%v_coord)
67 integer,
intent(in) :: nvars, nlocs
69 real(c_double),
intent(inout) :: hofx(nvars, nlocs)
70 type(c_ptr),
value,
intent(in) :: obss
74 real(kind_real),
dimension(:),
allocatable :: obsvcoord
75 type(
ufo_geoval),
pointer :: vcoordprofile, profile
76 real(kind_real),
allocatable :: wf(:)
77 integer,
allocatable :: wi(:)
79 character(len=MAXVARLEN) :: geovar
81 real(kind_real),
allocatable :: tmp(:)
82 real(kind_real) :: tmp2
91 allocate(obsvcoord(nlocs))
92 call obsspace_get_db(obss,
"MetaData",
"height", obsvcoord)
100 allocate(tmp(vcoordprofile%nval))
102 tmp = vcoordprofile%vals(:,iobs)
103 tmp2 = obsvcoord(iobs)
109 geovar = self%geovars%variable(ivar)
117 & hofx(ivar,iobs), wi(iobs), wf(iobs))
122 deallocate(obsvcoord)