Go to the documentation of this file.
13 static ProfileCheckMaker<ProfileCheckUnstableLayer>
21 :
ProfileCheckBase(options, profileIndices, profileDataHandler, profileCheckValidator)
30 const std::vector <float> &pressures =
32 const std::vector <float> &tObs =
34 const std::vector <float> &tBkg =
36 std::vector <int> &tFlags =
38 std::vector <int> &NumAnyErrors =
40 std::vector <int> &NumSuperadiabat =
42 const std::vector <float> &tObsCorrection =
45 if (!oops::allVectorsSameNonZeroSize(pressures, tObs, tBkg, tFlags, tObsCorrection)) {
46 oops::Log::warning() <<
"At least one vector is the wrong size. "
47 <<
"Check will not be performed." << std::endl;
48 oops::Log::warning() <<
"Vector sizes: "
49 << oops::listOfVectorSizes(pressures, tObs, tBkg, tFlags, tObsCorrection)
54 std::vector <float> tObsFinal;
60 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
69 const float Tadiabat = tObsFinal[jlevprev] *
78 oops::Log::debug() <<
" -> Failed unstable layer/superadiabat check for levels "
79 << jlevprev <<
" and " << jlev << std::endl;
83 <<
"P = " << pressures[jlevprev] * 0.01 <<
"hPa, tObs = "
86 <<
"tObs - Tadiabat = " << tObsFinal[jlev] - Tadiabat
89 <<
"P = " << pressures[jlev] * 0.01 <<
"hPa, tObs = "
static constexpr const char *const counter_NumAnyErrors
Retrieve and store data for individual profiles. To do this, first the vector of values in the entire...
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.
ProfileCheckUnstableLayer(const ProfileConsistencyCheckParameters &options, const ProfileIndices &profileIndices, ProfileDataHandler &profileDataHandler, ProfileCheckValidator &profileCheckValidator)
static constexpr double t0c
Profile QC check validator.
static constexpr const char *const PBottom
void fillValidator() override
Fill variables in validator.
oops::Parameter< float > ULCheck_MinP
Min P for unstable layer/superadiabat check (Pa)
Profile QC checker base class.
@ SuperadiabatFlag
Superadiabatic check flag.
const ProfileConsistencyCheckParameters & options_
Configurable parameters.
static constexpr const char *const obs_air_pressure
const float missingValueFloat
Missing value (float)
static constexpr const char *const hofx_air_temperature
Options controlling the operation of the ProfileConsistencyChecks filter.
void runCheck() override
Run check.
static constexpr double rd_over_cp
void correctVector(const std::vector< T > &v1, const std::vector< T > &v2, std::vector< T > &vout)
Apply correction to vector of values.
static constexpr const char *const counter_NumSuperadiabat
oops::Parameter< float > ULCheck_SuperadiabatTol
Tolerance for unstable layer/superadiabat check (K)
static constexpr const char *const obscorrection_air_temperature
static ProfileCheckMaker< ProfileCheckUnstableLayer > makerProfileCheckUnstableLayer_("UnstableLayer")
static constexpr const char *const qcflags_air_temperature
@ FinalRejectFlag
Final QC flag.
oops::Parameter< float > ULCheck_PBThresh
Bottom pressure threshold for unstable layer/superadiabat check (Pa)
std::vector< T > & get(const std::string &fullname)
static constexpr const char *const obs_air_temperature
void set(const std::string &fullname, std::vector< T > &&vec_in)