UFO
ProcessAMVQI.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2021 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_FILTERS_PROCESSAMVQI_H_
9 #define UFO_FILTERS_PROCESSAMVQI_H_
10 
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 #include <vector>
15 
16 #include "oops/generic/ObsFilterParametersBase.h"
17 #include "oops/util/ObjectCounter.h"
18 #include "oops/util/parameters/Parameter.h"
19 #include "oops/util/parameters/RequiredParameter.h"
21 
22 namespace ufo {
23 
24 /// \brief Parameters controlling the operation of the ProcessAMVQI filter.
25 class ProcessAMVQIParameters : public oops::ObsFilterParametersBase {
26  OOPS_CONCRETE_PARAMETERS(ProcessAMVQIParameters, ObsFilterParametersBase)
27 
28  public:
29  /// How many generating applications to search for.
30  oops::RequiredParameter<size_t> number_of_apps {
31  "number of generating apps",
32  this
33  };
34 };
35 
36 /// \brief A filter to convert new BUFR formatted data into variables with names
37 /// corressponding to the wind generating application.
38 ///
39 /// \details This filter will convert variables of "percent_confidence_<number>" and
40 /// "wind_generating_application_<number>" to variables named corresponding to the
41 /// wind_generating_application (see Table 1).
42 ///
43 /// Table 1:
44 /// Wind generating application number = QI type
45 /// 1 = Full weighted mixture of individual quality tests
46 /// 2 = Weighted mixture of individual tests, but excluding forecast comparison
47 /// 3 = Recursive filter function
48 /// 4 = Common quality index (QI) without forecast
49 /// 5 = QI without forecast
50 /// 6 = QI with forecast
51 /// 7 = Estimated Error (EE) in m/s converted to a percent confidence
52 ///
53 /// See ProcessAMVQIParameters for the documentation of
54 /// the parameters controlling this filter.
56  private util::ObjectCounter<ProcessAMVQI> {
57  public:
58  /// The type of parameters accepted by the constructor of this filter.
59  /// This typedef is used by the FilterFactory.
61 
62  static const std::string classname() {return "ufo::ProcessAMVQI";}
63 
64  ProcessAMVQI(ioda::ObsSpace & obsdb, const Parameters_ & parameters,
65  std::shared_ptr<ioda::ObsDataVector<int>> flags,
66  std::shared_ptr<ioda::ObsDataVector<float>> obserr);
67  ~ProcessAMVQI() override;
68 
69  private:
70  void print(std::ostream &) const override;
71  void doFilter() const override;
72 
74 };
75 
76 } // namespace ufo
77 
78 #endif // UFO_FILTERS_PROCESSAMVQI_H_
Base class for UFO observation processors (including QC filters).
A filter to convert new BUFR formatted data into variables with names corressponding to the wind gene...
Definition: ProcessAMVQI.h:56
ProcessAMVQI(ioda::ObsSpace &obsdb, const Parameters_ &parameters, std::shared_ptr< ioda::ObsDataVector< int >> flags, std::shared_ptr< ioda::ObsDataVector< float >> obserr)
Definition: ProcessAMVQI.cc:24
void doFilter() const override
A filter to convert new BUFR formatted data into variables with names corressponding to the wind gene...
Definition: ProcessAMVQI.cc:54
void print(std::ostream &) const override
static const std::string classname()
Definition: ProcessAMVQI.h:62
Parameters_ parameters_
Definition: ProcessAMVQI.h:73
~ProcessAMVQI() override
Definition: ProcessAMVQI.cc:35
ProcessAMVQIParameters Parameters_
Definition: ProcessAMVQI.h:60
Parameters controlling the operation of the ProcessAMVQI filter.
Definition: ProcessAMVQI.h:25
oops::RequiredParameter< size_t > number_of_apps
How many generating applications to search for.
Definition: ProcessAMVQI.h:30
Definition: RunCRTM.h:27