Go to the documentation of this file.
11 use fckit_configuration_module,
only: fckit_configuration
21 use missing_values_mod
22 use fckit_log_module,
only : fckit_log
30 type(gnssro_conf) :: roconf
31 real(kind_real),
allocatable :: obsLon2d(:), obsLat2d(:)
43 type(fckit_configuration),
intent(in) :: f_conf
44 integer,
intent(in) :: c_size
48 allocate(self%obsLon2d(c_size*self%roconf%n_horiz))
49 allocate(self%obsLat2d(c_size*self%roconf%n_horiz))
59 real(kind_real),
intent(inout) :: hofx(:)
60 type(c_ptr),
value,
intent(in) :: obss
63 character(len=*),
parameter :: myname_=
"ufo_gnssro_bndropp2d_simobs"
65 character(max_string) :: err_msg
66 integer :: nlev, nobs, iobs, nvprof, obss_nobs
68 real(kind_real),
allocatable :: obslat(:), obslon(:), obsimpp(:), obslocr(:), obsgeoid(:)
72 write(err_msg,*)
"TRACE: ufo_gnssro_bndropp2d_simobs_stub: begin"
73 call fckit_log%info(err_msg)
75 n_horiz = self%roconf%n_horiz
78 if (geovals%nlocs /=
size(hofx)*n_horiz)
then
79 write(err_msg,*) myname_,
' error: nlocs inconsistent!'
80 call abor1_ftn(err_msg)
92 nobs = obsspace_get_nlocs(obss)
95 allocate(obslon(nobs))
96 allocate(obslat(nobs))
97 allocate(obsimpp(nobs))
98 allocate(obslocr(nobs))
99 allocate(obsgeoid(nobs))
101 call obsspace_get_db(obss,
"MetaData",
"longitude", obslon)
102 call obsspace_get_db(obss,
"MetaData",
"latitude", obslat)
103 call obsspace_get_db(obss,
"MetaData",
"impact_parameter", obsimpp)
104 call obsspace_get_db(obss,
"MetaData",
"earth_radius_of_curvature", obslocr)
105 call obsspace_get_db(obss,
"MetaData",
"geoid_height_above_reference_ellipsoid", obsgeoid)
108 write(err_msg,*)
"TRACE: ufo_gnssro_bndropp2d_simobs_stub: begin observation loop, nobs = ", nobs
109 call fckit_log%info(err_msg)
117 write(err_msg,*)
"TRACE: ufo_gnssro_bndropp2d_simobs_stub: completed"
118 call fckit_log%info(err_msg)
integer, parameter max_string
Fortran module to prepare for Lagrange polynomial interpolation. based on GSI: lagmod....
Fortran derived type for gnssro trajectory.
subroutine ufo_gnssro_bndropp2d_setup(self, f_conf, c_size)
subroutine, public lag_interp_smthweights(x, xt, aq, bq, w, dw, n)
Fortran module to perform linear interpolation.
subroutine, public gnssro_conf_setup(roconf, f_conf)
subroutine, public lag_interp_const(q, x, n)
subroutine ufo_gnssro_bndropp2d_simobs(self, geovals, hofx, obss)
character(len=maxvarlen), parameter, public var_z
subroutine, public ufo_geovals_get_var(self, varname, geoval)
Fortran module for gnssro bending angle ropp2d forward operator following the ROPP (2018 Aug) impleme...
character(len=maxvarlen), parameter, public var_q
character(len=maxvarlen), parameter, public var_ts
type to hold interpolated fields required by the obs operators
type to hold interpolated field for one variable, one observation
character(len=maxvarlen), parameter, public var_prs
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.