40 character(len=*),
parameter :: myname_=
"ufo_seasurfacetemp_tlad_settraj" 41 character(max_string) :: err_msg
56 real(c_double),
intent(inout) :: hofx(:)
58 character(len=*),
parameter :: myname_=
"ufo_seasurfacetemp_simobs_tl" 59 character(max_string) :: err_msg
64 print *, myname_,
' nobs: ', geovals%nobs,
size(hofx,1)
67 if (geovals%nobs /=
size(hofx,1))
then 68 write(err_msg,*) myname_,
' error: nobs inconsistent!' 69 call abor1_ftn(err_msg)
76 do iobs = 1,
size(hofx,1)
77 hofx(iobs) = geoval_sst%vals(1,iobs)
88 real(c_double),
intent(inout) :: hofx(:)
90 character(len=*),
parameter :: myname_=
"ufo_seasurfacetemp_simobs_ad" 91 character(max_string) :: err_msg
97 if (geovals%nobs /=
size(hofx,1))
then 98 write(err_msg,*) myname_,
' error: nobs inconsistent!' 99 call abor1_ftn(err_msg)
102 if (.not. geovals%linit ) geovals%linit=.true.
107 if (.not.(
allocated(geoval_sst%vals)))
then 109 allocate(geoval_sst%vals(1,
size(hofx,1)))
114 do iobs = 1,
size(hofx,1)
115 geoval_sst%vals(1,iobs) = geoval_sst%vals(1,iobs) + hofx(iobs)
character(len=maxvarlen), public var_ocn_sst
subroutine, public ufo_geovals_get_var(self, varname, geoval, status)
integer, parameter max_string
Fortran module to handle sea-surface temperature observations.
subroutine, public ufo_seasurfacetemp_simobs_tl(self, geovals, hofx)
subroutine, public ufo_seasurfacetemp_tlad_settraj(self, geovals)
type to hold interpolated fields required by the obs operators
Fortran derived type for sea-surface temperature observation operator.
subroutine, public ufo_seasurfacetemp_simobs_ad(self, geovals, hofx)
type to hold interpolated field for one variable, one observation