41 character(len=*),
parameter :: myname_=
"ufo_seaicefrac_tlad_settraj" 42 character(max_string) :: err_msg
52 self%ncat = geoval%nval
63 real(c_double),
intent(inout) :: hofx(:)
65 character(len=*),
parameter :: myname_=
"ufo_seaicefrac_simobs_tl" 66 character(max_string) :: err_msg
71 print *, myname_,
' nobs: ', geovals%nobs,
size(hofx,1)
74 if (geovals%nobs /=
size(hofx,1))
then 75 write(err_msg,*) myname_,
' error: nobs inconsistent!' 76 call abor1_ftn(err_msg)
83 do iobs = 1,
size(hofx,1)
84 hofx(iobs) = sum(geoval%vals(:,iobs))
95 real(c_double),
intent(inout) :: hofx(:)
97 character(len=*),
parameter :: myname_=
"ufo_seaicefrac_simobs_ad" 98 character(max_string) :: err_msg
104 if (geovals%nobs /=
size(hofx,1))
then 105 write(err_msg,*) myname_,
' error: nobs inconsistent!' 106 call abor1_ftn(err_msg)
109 if (.not. geovals%linit ) geovals%linit=.true.
114 if (.not.(
allocated(geoval%vals)))
then 115 if (self%ncat < 1)
then 116 write(err_msg,*) myname_,
' unknown number of categories' 117 call abor1_ftn(err_msg)
119 allocate(geoval%vals(self%ncat,
size(hofx,1)))
124 do iobs = 1,
size(hofx,1)
125 geoval%vals(:,iobs) = geoval%vals(:,iobs) + hofx(iobs)
subroutine, public ufo_geovals_get_var(self, varname, geoval, status)
Fortran module to handle ice concentration observations.
integer, parameter max_string
subroutine, public ufo_seaicefrac_simobs_tl(self, geovals, hofx)
type to hold interpolated fields required by the obs operators
Fortran derived type for sea ice fraction observation operator.
subroutine, public ufo_seaicefrac_tlad_settraj(self, geovals)
character(len=maxvarlen), public var_seaicefrac
type to hold interpolated field for one variable, one observation
subroutine, public ufo_seaicefrac_simobs_ad(self, geovals, hofx)