12 #include "ioda/ObsSpace.h"
14 #include "ufo/GeoVaLs.h"
15 #include "ufo/ObsDiagnostics.h"
17 #include "oops/base/Variables.h"
18 #include "oops/util/abor1_cpp.h"
19 #include "oops/util/Logger.h"
30 geovars_ += oops::Variables({
"water_area_fraction"});
31 if (jobs.size() > 0) {
32 hdiags_ += oops::Variables({
"brightness_temperature_jacobian_surface_emissivity"}, jobs);
34 oops::Log::error() <<
"Channels size is ZERO !" << std::endl;
35 ABORT(
"Channels size is ZERO !");
44 ioda::ObsVector & out)
const {
45 const std::size_t njobs =
jobs_.size();
46 const std::size_t nlocs = odb.nlocs();
49 ASSERT(out.nlocs() == nlocs);
51 std::vector <float> pred(nlocs, 0.0);
52 std::vector<float> h2o_frac(nlocs, 0.0);
53 geovals.
get(h2o_frac,
"water_area_fraction");
56 for (std::size_t jb = 0; jb < njobs; ++jb) {
57 hdiags =
"brightness_temperature_jacobian_surface_emissivity_" + std::to_string(
jobs_[jb]);
58 ydiags.
get(pred, hdiags);
59 for (std::size_t jl = 0; jl < nlocs; ++jl) {
60 if (h2o_frac[jl] < 0.99 && std::fabs(pred[jl]) > 0.001) {
61 out[jl*njobs+jb] = pred[jl];