UFO
ProfileStandardLevels.h
Go to the documentation of this file.
1 /*
2  * (C) Crown copyright 2020, Met Office
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef UFO_PROFILE_PROFILESTANDARDLEVELS_H_
9 #define UFO_PROFILE_PROFILESTANDARDLEVELS_H_
10 
11 #include <algorithm>
12 #include <memory>
13 #include <ostream>
14 #include <string>
15 #include <vector>
16 
17 #include "oops/util/Logger.h"
18 #include "oops/util/missingValues.h"
19 
21 
23 
24 namespace ioda {
25  class ObsSpace;
26 }
27 
28 namespace ufo {
29 
30  /// \brief Calculate standard levels
32  public:
35 
36  protected: // functions
37  /// Calculate standard levels
38  void calcStdLevels(const int numProfileLevels,
39  const std::vector <float> &pressures,
40  const std::vector <float> &tObs,
41  const std::vector <int> &tFlags);
42 
43  /// Compute indices of particular standard levels for the hydrostatic check
44  void findHCheckStdLevs();
45 
46  /// Calculate standard levels for U and V data
47  void calcStdLevelsUV(const int numProfileLevels,
48  const std::vector <float> &pressures,
49  const std::vector <float> &uObs,
50  const std::vector <float> &vObs,
51  const std::vector <int> &uFlags);
52 
53  protected: // variables
54  /// Standard levels (hPa)
55  std::vector <float> StandardLevels_;
56 
57  /// Big gaps (hPa) used in interpolation check
58  std::vector <float> BigGaps_;
59 
60  /// Configurable parameters
62 
63  /// Number of significant levels
64  int NumSig_;
65 
66  /// Number of standard levels
67  int NumStd_;
68 
69  /// Index of standard levels
70  std::vector <int> StdLev_;
71 
72  /// Significant level below standard level
73  std::vector <int> SigBelow_;
74 
75  /// Significant level above standard level
76  std::vector <int> SigAbove_;
77 
78  /// Log(Pressure) - used for vertical interpolation
79  std::vector <float> LogP_;
80 
81  /// Indices of standard levels
82  std::vector <int> IndStd_;
83 
84  /// Standard level index closest to 925 hPa
85  int Ind925_ = 1; // default from OPS
86 
87  /// Standard level index closest to 100 hPa
88  int Ind100_ = 10; // default from OPS
89  };
90 } // namespace ufo
91 
92 #endif // UFO_PROFILE_PROFILESTANDARDLEVELS_H_
Options controlling the operation of the ConventionalProfileProcessing filter.
Calculate standard levels.
int Ind925_
Standard level index closest to 925 hPa.
void calcStdLevelsUV(const int numProfileLevels, const std::vector< float > &pressures, const std::vector< float > &uObs, const std::vector< float > &vObs, const std::vector< int > &uFlags)
Calculate standard levels for U and V data.
int Ind100_
Standard level index closest to 100 hPa.
std::vector< float > BigGaps_
Big gaps (hPa) used in interpolation check.
std::vector< int > StdLev_
Index of standard levels.
ProfileStandardLevels(const ConventionalProfileProcessingParameters &options)
void findHCheckStdLevs()
Compute indices of particular standard levels for the hydrostatic check.
const ConventionalProfileProcessingParameters & optionsSL_
Configurable parameters.
void calcStdLevels(const int numProfileLevels, const std::vector< float > &pressures, const std::vector< float > &tObs, const std::vector< int > &tFlags)
Calculate standard levels.
std::vector< float > StandardLevels_
Standard levels (hPa)
std::vector< float > LogP_
Log(Pressure) - used for vertical interpolation.
int NumStd_
Number of standard levels.
std::vector< int > IndStd_
Indices of standard levels.
std::vector< int > SigBelow_
Significant level below standard level.
std::vector< int > SigAbove_
Significant level above standard level.
int NumSig_
Number of significant levels.
Forward declarations.
Definition: ObsAodExt.h:25
Definition: RunCRTM.h:27