Go to the documentation of this file.
12 static ProfileCheckMaker<ProfileCheckBackgroundGeopotentialHeight>
20 :
ProfileCheckBase(options, profileIndices, profileDataHandler, profileCheckValidator)
25 oops::Log::debug() <<
" Background check for geopotential height" << std::endl;
29 const std::vector <float> &Zstation =
31 const std::vector <float> &pressures =
33 const std::vector <float> &zObs =
35 const std::vector <float> &zObsErr =
37 const std::vector <float> &zBkg =
39 std::vector <float> &zBkgErr =
41 std::vector <float> &zPGE =
43 std::vector <float> &zPGEBd =
45 std::vector <int> &zFlags =
47 const std::vector <int> &tFlags =
49 const std::vector <float> &zObsCorrection =
51 const std::vector <int> &timeFlags =
54 if (!oops::allVectorsSameNonZeroSize(Zstation, pressures,
56 zPGE, zFlags, zObsCorrection,
58 oops::Log::warning() <<
"At least one vector is the wrong size. "
59 <<
"Check will not be performed." << std::endl;
60 oops::Log::warning() <<
"Vector sizes: "
61 << oops::listOfVectorSizes(Zstation, pressures,
63 zPGE, zFlags, zObsCorrection,
69 std::vector <float> zObsFinal;
73 std::vector <float> PdBad(numLevelsToCheck, 0);
80 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
84 zObsFinal[jlev] <= Zstation[jlev]) {
87 const float Plevel = pressures[jlev] / 100.0;
92 if (Plevel > PlevelThreshold) {
93 zBkgErr[jlev] = 1.2 * zBkgErrs[idx];
94 PdBad[jlev] = zBadPGEs[idx];
103 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
105 zPGE[jlev] = 0.5 + 0.5 * zPGE[jlev];
107 zPGE[jlev] = 0.5 + 0.5 * zPGE[jlev];
Retrieve and store data for individual profiles. To do this, first the vector of values in the entire...
@ 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...
static constexpr const char *const Zstation
ProfileDataHandler & profileDataHandler_
Profile data handler.
int getNumLevelsToCheck() const
Return number of levels to which QC checks should be applied.
static constexpr const char *const hofx_geopotential_height
Profile QC check validator.
ProbabilityOfGrossErrorParameters PGEParameters
Parameters related to PGE calculations.
static constexpr const char *const pge_geopotential_height
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 qcflags_geopotential_height
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.
ProfileCheckBackgroundGeopotentialHeight(const ProfileConsistencyCheckParameters &options, const ProfileIndices &profileIndices, ProfileDataHandler &profileDataHandler, ProfileCheckValidator &profileCheckValidator)
static constexpr const char *const obs_air_pressure
const float missingValueFloat
Missing value (float)
static constexpr const char *const bkgerr_geopotential_height
void runCheck() override
Run check.
static constexpr const char *const qcflags_time
Options controlling the operation of the ProfileConsistencyChecks filter.
static constexpr const char *const obscorrection_geopotential_height
void correctVector(const std::vector< T > &v1, const std::vector< T > &v2, std::vector< T > &vout)
Apply correction to vector of values.
@ HydrostaticFlag
Hydrostatic check flag.
static constexpr const char *const obs_geopotential_height
static constexpr const char *const qcflags_air_temperature
oops::Parameter< std::vector< float > > BkCheck_PlevelThresholds
@ InterpolationFlag
Interpolation check flag.
std::vector< T > & get(const std::string &fullname)
static ProfileCheckMaker< ProfileCheckBackgroundGeopotentialHeight > makerProfileCheckBackgroundGeopotentialHeight_("BackgroundGeopotentialHeight")
static constexpr const char *const pgebd_geopotential_height
oops::Parameter< std::vector< float > > BkCheck_zBkgErrs
oops::Parameter< std::vector< float > > BkCheck_zBadPGEs
@ SurfaceLevelFlag
Surface Level.
static constexpr const char *const obserr_geopotential_height