10 use oops_variables_mod
19 type(oops_variables),
public :: obsvars
20 type(oops_variables),
public :: geovars
35 integer :: ivar, nvars
38 nvars = self%obsvars%nvars()
40 call self%geovars%push_back(self%obsvars%variable(ivar))
52 type(c_ptr),
value,
intent(in) :: obss
70 real(c_double),
intent(inout) :: hofx(:)
71 type(c_ptr),
value,
intent(in) :: obss
73 integer :: iobs, ivar, nlocs, nvars
75 character(len=MAXVARLEN) :: geovar
78 nlocs = obsspace_get_nlocs(obss)
79 nvars = self%obsvars%nvars()
82 geovar = self%geovars%variable(ivar)
89 hofx(ivar + (iobs-1)*nvars) = point%vals(1,iobs)
104 use missing_values_mod
108 real(c_double),
intent(in) :: hofx(:)
109 type(c_ptr),
value,
intent(in) :: obss
111 integer :: iobs, ivar, nlocs, nvars
113 character(len=MAXVARLEN) :: geovar
114 real(c_double) :: missing
117 missing = missing_value(missing)
119 if (.not. geovals%linit ) geovals%linit=.true.
121 nlocs = obsspace_get_nlocs(obss)
122 nvars = self%obsvars%nvars()
125 geovar = self%geovars%variable(ivar)
130 if (.not.(
allocated(point%vals)))
then
132 allocate(point%vals(1,
size(hofx,1)))
138 if (hofx(ivar + (iobs-1)*nvars) /= missing)
then
139 point%vals(1,iobs) = hofx(ivar + (iobs-1)*nvars)