40 character(len=*),
parameter :: myname_=
"ufo_stericheight_tlad_settraj" 41 character(max_string) :: err_msg
45 print *, myname_,
' nobs: ', geovals%nobs
51 print *,
'===========================================' 53 print *, myname_,
' nval: ', geoval%nval
64 real(c_double),
intent(inout) :: hofx(:)
67 character(len=*),
parameter :: myname_=
"ufo_stericheight_simobs_tl" 68 character(max_string) :: err_msg
73 print *, myname_,
' nobs: ', geovals%nobs,
size(hofx,1)
77 if (geovals%nobs /=
size(hofx,1))
then 78 write(err_msg,*) myname_,
' error: nobs inconsistent!' 79 call abor1_ftn(err_msg)
87 do iobs = 1,
size(hofx,1)
88 hofx(iobs) = geoval%vals(1,iobs)
99 real(c_double),
intent(inout) :: hofx(:)
101 character(len=*),
parameter :: myname_=
"ufo_stericheight_simobs_ad" 102 character(max_string) :: err_msg
107 print *,
'&&&&&&&&&&&&7 in adjoint' 111 if (geovals%nobs /=
size(hofx,1))
then 112 write(err_msg,*) myname_,
' error: nobs inconsistent!' 113 call abor1_ftn(err_msg)
121 if (.not.(
allocated(geoval%vals)))
then 122 if (self%nl < 1)
then 127 allocate(geoval%vals(1,
size(hofx,1)))
130 if (.not. geovals%linit ) geovals%linit=.true.
134 do iobs = 1,
size(hofx,1)
135 geoval%vals(1,iobs) = geoval%vals(1,iobs) +
size(hofx,1)
subroutine, public ufo_geovals_get_var(self, varname, geoval, status)
integer, parameter max_string
subroutine, public ufo_stericheight_simobs_tl(self, geovals, hofx)
Fortran module to handle steric height operator.
subroutine, public ufo_stericheight_tlad_settraj(self, geovals)
type to hold interpolated fields required by the obs operators
character(len=maxvarlen), public var_abs_topo
Fortran derived type for steric height observation operator.
type to hold interpolated field for one variable, one observation
subroutine, public ufo_stericheight_simobs_ad(self, geovals, hofx)