12 #include "ioda/ObsDataVector.h"
13 #include "oops/util/IntSetParser.h"
14 #include "oops/util/missingValues.h"
32 const std::vector<std::vector<bool>> & flagged,
43 std::vector<int> rec_idx(
nlocs);
44 std::vector<int> layer_idx(
nlocs);
45 std::vector<float> factor(
nlocs);
46 const int maxlev = 500;
47 std::vector<std::vector<int> > super_obs_inlayer(maxlev, std::vector<int>(
nlocs));
49 for (
size_t i = 0; i < maxlev; ++i) {
50 for (
size_t j = 0; j <
nlocs; ++j) {
51 super_obs_inlayer[i][j] = 0;
55 for (
size_t jobs = 0; jobs <
nlocs; ++jobs) {
56 if (jobs > 0 && record[0][jobs] != record[0][jobs-1]) irec = irec +1;
58 layer_idx[jobs] = layeridx[0][jobs];
59 if (flags[0][jobs] == 0) super_obs_inlayer[layer_idx[jobs]][rec_idx[jobs]]++;
61 for (
size_t jobs = 0; jobs <
nlocs; ++jobs) {
63 if (super_obs_inlayer[layer_idx[jobs]][rec_idx[jobs]] > 0) {
64 factor[jobs] = super_obs_inlayer[layer_idx[jobs]][rec_idx[jobs]];
65 factor[jobs] = sqrt(factor[jobs]);
67 if (obserr[0][jobs] !=
missing) obserr[0][jobs] *= factor[jobs];
ObsFilterData provides access to all data related to an ObsFilter.
size_t nlocs() const
Returns the number of locations in the associated ObsSpace.
ioda::ObsSpace & obsspace() const
Returns reference to ObsSpace associated with ObsFilterData.
void apply(const Variables &, const std::vector< std::vector< bool >> &, const ObsFilterData &, int, ioda::ObsDataVector< int > &, ioda::ObsDataVector< float > &) const override
ROobserrInflation(const Parameters_ &)
integer function nlocs(this)
Return the number of observational locations in this Locations object.
static FilterActionMaker< InflateError > makerInflateErr_("inflate error")