22      real(kind_real), 
allocatable :: wf(:)
    23      integer, 
allocatable :: wi(:)
    34       class(ufo_conventional_profile), 
intent(in)  :: self
    35       type(ufo_geovals), 
intent(in)                :: geovals
    36       real(c_double),  
intent(inout)               :: hofx(:)
    37       type(c_ptr), 
value, 
intent(in)               :: obss
    39       character(len=*), 
parameter :: myname_=
"ufo_conventional_profile_simobs"    40       character(max_string) :: err_msg
    44       integer :: wi, ierr, nobs
    45       real(kind_real), 
allocatable :: pressure(:)
    46       type(ufo_geoval), 
pointer :: prsl, tv
    49       if (geovals%nobs /= 
size(hofx)) 
then    50         write(err_msg,*) myname_, 
' error: nobs inconsistent!'    51         call abor1_ftn(err_msg)
    57          write(err_msg,*) myname_, trim(
var_prsl), 
' doesnt exist'    58          call abor1_ftn(err_msg)
    64          write(err_msg,*) myname_, trim(
var_tv), 
' doesnt exist'    65          call abor1_ftn(err_msg)
    70       allocate(pressure(nobs))
    74       do iobs = 1, geovals%nobs
 
subroutine, public ufo_geovals_get_var(self, varname, geoval, status)
 
subroutine vert_interp_apply(nlev, fvec, f, wi, wf)
 
integer, parameter max_string
 
integer function, public obsspace_get_nobs(c_dom)
Return the number of observations. 
 
Fortran module to perform linear interpolation. 
 
character(len=maxvarlen), public var_prsl
 
subroutine conventional_profile_simobs_(self, geovals, hofx, obss)
 
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type. 
 
Fortran interface to ObsSpace. 
 
character(len=maxvarlen), public var_tv
 
subroutine vert_interp_weights(nlev, obl, vec, wi, wf)