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
61 real(c_double) :: missing
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)
89 missing = missing_value(missing)
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)
subroutine, public gnssro_conf_setup(roconf, f_conf)
Fortran module to prepare for Lagrange polynomial interpolation. based on GSI: lagmod....
subroutine, public lag_interp_const(q, x, n)
subroutine, public lag_interp_smthweights(x, xt, aq, bq, w, dw, n)
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.
integer, parameter max_string
subroutine, public ufo_geovals_get_var(self, varname, geoval)
Fortran module for gnssro bending angle ropp2d forward operator following the ROPP (2018 Aug) impleme...
subroutine ufo_gnssro_bndropp2d_setup(self, f_conf, c_size)
subroutine ufo_gnssro_bndropp2d_simobs(self, geovals, hofx, obss)
character(len=maxvarlen), parameter, public var_prs
character(len=maxvarlen), parameter, public var_q
character(len=maxvarlen), parameter, public var_z
character(len=maxvarlen), parameter, public var_ts
Fortran module to perform linear interpolation.
type to hold interpolated field for one variable, one observation
type to hold interpolated fields required by the obs operators
Fortran derived type for gnssro trajectory.