Go to the documentation of this file.
12 static ProfileCheckMaker<ProfileCheckBackgroundWindSpeed>
20 :
ProfileCheckBase(options, profileIndices, profileDataHandler, profileCheckValidator)
29 const std::vector <float> &uObs =
31 const std::vector <float> &uObsErr =
33 const std::vector <float> &uBkg =
35 const std::vector <float> &uBkgErr =
37 std::vector <float> &uPGE =
39 std::vector <float> &uPGEBd =
41 std::vector <int> &uFlags =
43 const std::vector <float> &vObs =
45 const std::vector <float> &vObsErr =
47 const std::vector <float> &vBkg =
49 const std::vector <float> &vBkgErr =
51 std::vector <float> &vPGE =
53 std::vector <float> &vPGEBd =
55 std::vector <int> &vFlags =
57 const std::vector <int> &timeFlags =
60 if (!oops::allVectorsSameNonZeroSize(uObs, uObsErr, uBkg, uBkgErr,
62 vObs, vObsErr, vBkg, vBkgErr,
63 vPGE, vFlags, timeFlags)) {
64 oops::Log::warning() <<
"At least one vector is the wrong size. "
65 <<
"Check will not be performed." << std::endl;
66 oops::Log::warning() <<
"Vector sizes: "
67 << oops::listOfVectorSizes(uObs, uObsErr, uBkg, uBkgErr,
69 vObs, vObsErr, vBkg, vBkgErr,
70 vPGE, vFlags, timeFlags)
79 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
81 uPGE[jlev] = 0.5 + 0.5 * uPGE[jlev];
Retrieve and store data for individual profiles. To do this, first the vector of values in the entire...
static constexpr const char *const obs_northward_wind
oops::Parameter< float > BkCheck_PdBad_uv
Prior probability of 'bad' observations for u and v.
ProfileCheckBackgroundWindSpeed(const ProfileConsistencyCheckParameters &options, const ProfileIndices &profileIndices, ProfileDataHandler &profileDataHandler, ProfileCheckValidator &profileCheckValidator)
@ PermRejectFlag
Blacklisted data.
const ProfileIndices & profileIndices_
Indices of profile's observations in the entire sample.
Determine indices of observations making up individual profiles. The indices are computed with respec...
ProfileDataHandler & profileDataHandler_
Profile data handler.
int getNumLevelsToCheck() const
Return number of levels to which QC checks should be applied.
static constexpr const char *const qcflags_northward_wind
static ProfileCheckMaker< ProfileCheckBackgroundWindSpeed > makerProfileCheckBackgroundWindSpeed_("BackgroundWindSpeed")
static constexpr const char *const pge_northward_wind
Profile QC check validator.
static constexpr const char *const qcflags_eastward_wind
ProbabilityOfGrossErrorParameters PGEParameters
Parameters related to PGE calculations.
static constexpr const char *const bkgerr_northward_wind
void BayesianPGEUpdate(const ProbabilityOfGrossErrorParameters &options, const std::vector< float > &obsVal, const std::vector< float > &obsErr, const std::vector< float > &bkgVal, const std::vector< float > &bkgErr, const std::vector< float > &PdBad, const bool ModelLevels, std::vector< int > &flags, std::vector< float > &PGE, std::vector< float > &PGEBd, float ErrVarMax, const std::vector< float > *obsVal2, const std::vector< float > *bkgVal2)
Bayesian update of probability of gross error (PGE) for scalar (1D) or vector (2D) observables....
static constexpr const char *const obserr_eastward_wind
static constexpr const char *const obserr_northward_wind
oops::Parameter< bool > modellevels
Have the observation and model values been averaged onto model levels?
Profile QC checker base class.
const ProfileConsistencyCheckParameters & options_
Configurable parameters.
static constexpr const char *const hofx_northward_wind
static constexpr const char *const hofx_eastward_wind
static constexpr const char *const qcflags_time
static constexpr const char *const bkgerr_eastward_wind
Options controlling the operation of the ProfileConsistencyChecks filter.
static constexpr const char *const obs_eastward_wind
static constexpr const char *const pge_eastward_wind
void runCheck() override
Run check.
static constexpr const char *const pgebd_northward_wind
@ InterpolationFlag
Interpolation check flag.
std::vector< T > & get(const std::string &fullname)
static constexpr const char *const pgebd_eastward_wind