19 const std::vector <float> &pressures,
20 const std::vector <float> &tObs,
21 const std::vector <int> &tFlags)
28 StdLev_.assign(numLevelsToCheck, -1);
31 LogP_.assign(numLevelsToCheck, 0.0);
32 IndStd_.assign(numLevelsToCheck, -1);
35 const float missingValueFloat = util::missingValue(1.0f);
39 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
42 if (tObs[jlev] != missingValueFloat &&
44 LogP_[jlev] = (pressures[jlev] > 0 ? std::log(pressures[jlev]) : 0.0);
56 for (
int jlevStd = jlevStdA; jlevStd <
NumStd_; ++jlevStd) {
66 for (
int jlevstd = 0; jlevstd <
NumStd_; ++jlevstd) {
69 int IPStd = std::round(pressures[jlev] * 0.01);
72 IndStd_[jlevstd] =
static_cast<int> (i);
84 for (
size_t jstdlev = 0; jstdlev <
StandardLevels_.size() - 1; ++jstdlev) {
86 throw eckit::BadValue(
"Standard levels in wrong order", Here());
98 const std::vector <float> &pressures,
99 const std::vector <float> &uObs,
100 const std::vector <float> &vObs,
101 const std::vector <int> &uFlags)
103 oops::Log::debug() <<
" Finding standard levels for U and V data" << std::endl;
108 StdLev_.assign(numLevelsToCheck, -1);
111 LogP_.assign(numLevelsToCheck, 0.0);
114 const float missingValueFloat = util::missingValue(1.0f);
119 for (
int jlev = 0; jlev < numLevelsToCheck; ++jlev) {
120 if (uObs[jlev] != missingValueFloat && vObs[jlev] != missingValueFloat) {
121 LogP_[jlev] = std::log(pressures[jlev]);
128 for (
int jlevstd = jlevStdA; jlevstd <
NumStd_; ++jlevstd) {