18 #include "ioda/ObsDataVector.h"
19 #include "oops/util/IntSetParser.h"
20 #include "oops/util/missingValues.h"
41 channels_.size() == 3);
71 std::vector<float> water_frac(
nlocs);
72 in.
get(
Variable(
"water_area_fraction@GeoVaLs"), water_frac);
76 for (
size_t igrp = 0; igrp < ngrps; ++igrp) {
78 in.
get(
Variable(
"brightness_temperature@"+vargrp[igrp], channels_)[0], bt238);
79 in.
get(
Variable(
"brightness_temperature@"+vargrp[igrp], channels_)[1], bt314);
80 in.
get(
Variable(
"brightness_temperature@"+vargrp[igrp], channels_)[2], bt890);
90 for (
size_t iloc = 0; iloc <
nlocs; ++iloc) {
91 bt238[iloc] = bt238[iloc] - bias238[iloc];
92 bt314[iloc] = bt314[iloc] - bias314[iloc];
93 bt890[iloc] = bt890[iloc] - bias890[iloc];
99 for (
size_t iloc = 0; iloc <
nlocs; ++iloc) {
100 if (water_frac[iloc] >= 0.99 &&
102 out[igrp][iloc] = -113.2 + (2.41 - 0.0049 * bt238[iloc]) * bt238[iloc]
103 + 0.454 * bt314[iloc] - bt890[iloc];
104 out[igrp][iloc] = std::max(0.f, out[igrp][iloc]);
ObsFilterData provides access to all data related to an ObsFilter.
size_t nlocs() const
Returns the number of locations in the associated ObsSpace.
void get(const Variable &varname, std::vector< float > &values) const
Fills a std::vector with values of the specified variable.
void compute(const ObsFilterData &, ioda::ObsDataVector< float > &) const
compute the result of the function
SCATRetMWParameters options_
const ufo::Variables & requiredVariables() const
geovals required to compute the function
SCATRetMW(const eckit::LocalConfiguration &=eckit::LocalConfiguration())
oops::Parameter< std::string > addBias
oops::RequiredParameter< std::vector< std::string > > varGroup
oops::RequiredParameter< int > ch238
oops::RequiredParameter< int > ch890
oops::RequiredParameter< int > ch314
oops::Parameter< std::string > testBias
integer function nlocs(this)
Return the number of observational locations in this Locations object.
static ObsFunctionMaker< SCATRetMW > makerSCATRetMW_("SCATRetMW")