35 logical,
parameter :: use_compress=.true.
36 class(ufo_gnssro_Ref),
intent(in) :: self
37 type(ufo_geovals),
intent(in) :: geovals
38 real(kind_real),
intent(inout) :: hofx(:)
39 type(c_ptr),
value,
intent(in) :: obss
41 character(len=*),
parameter :: myname_=
"ufo_gnssro_ref_simobs" 42 character(max_string) :: err_msg
48 type(ufo_geoval),
pointer :: t,q,prs,gph
49 real(kind_real) :: refr1, refr2,refr3
50 real(kind_real),
allocatable :: obsZ(:), obsLat(:)
51 real(kind_real) :: obsH, gesT,gesQ, gesTv, gesTv0,gesP
53 if (geovals%nobs /=
size(hofx))
then 54 write(err_msg,*) myname_,
' error: nobs inconsistent!' 55 call abor1_ftn(err_msg)
60 write(err_msg,*) myname_, trim(
var_prs),
' doesnt exist' 61 call abor1_ftn(err_msg)
66 write(err_msg,*) myname_, trim(
var_t),
' doesnt exist' 67 call abor1_ftn(err_msg)
71 write(err_msg,*) myname_, trim(
var_q),
' doesnt exist' 72 call abor1_ftn(err_msg)
76 write(err_msg,*) myname_, trim(
var_z),
' doesnt exist' 77 call abor1_ftn(err_msg)
82 allocate(obslat(nobs))
90 do iobs = 1, geovals%nobs
101 gestv0 = t%vals(wi,iobs)*(
one + (
rv_over_rd-
one) * (q%vals(wi,iobs)/(1-q%vals(wi,iobs)) ))
102 gesp = prs%vals(wi,iobs)/exp(
two*
grav*(obsh-gph%vals(wi,iobs))/(
rd*(gestv+gestv0)))
103 refr1 =
n_a*gesp/gest
106 hofx(iobs) = refr1 + refr2 + refr3
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 handle gnssro refractivity observations.
real(kind_real), parameter, public rd
real(kind_real), parameter, public rd_over_rv
Fortran derived type for gnssro trajectory.
real(kind_real), parameter, public rv_over_rd
character(len=maxvarlen), public var_z
Fortran module to perform linear interpolation.
real(fp), parameter, public one
character(len=maxvarlen), public var_q
real(kind_real), public n_c
subroutine, public gnssro_ref_constants(use_compress)
real(fp), parameter, public two
character(len=maxvarlen), public var_prs
subroutine ufo_gnssro_ref_simobs(self, geovals, hofx, obss)
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.
real(kind_real), parameter, public grav
real(kind_real), public n_b
character(len=maxvarlen), public var_t
Fortran interface to ObsSpace.
subroutine vert_interp_weights(nlev, obl, vec, wi, wf)
real(kind_real), public n_a