UFO
Cal_Humidity.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_VARIABLETRANSFORMS_CAL_HUMIDITY_H_
9 #define UFO_VARIABLETRANSFORMS_CAL_HUMIDITY_H_
10 
11 #include <algorithm>
12 #include <memory>
13 #include <ostream>
14 #include <string>
15 #include <vector>
16 
17 #include "oops/util/ObjectCounter.h"
19 
20 namespace ufo {
21 
22 /*!
23 * \brief Relative Humidity filter
24 *
25 * Performs a variable conversion from specific_humidity, temperature, and
26 * pressure to relative humidity. The newly calculated variable is included in the same
27 * obs space.
28 *
29 * Example:
30 *
31 * \code{.yaml}
32 * obs filters:
33 * - filter: Variables Transform
34 * Transform: ["RelativeHumidity"]
35 * Formulation: Sonntag # Using Sonntag formulation
36 * \endcode
37 *
38 * See VariableTransformsParameters for filter setup.
39 */
41  public:
43  const ObsFilterData &data,
44  const std::shared_ptr<ioda::ObsDataVector<int>> &flags);
45  // Run variable conversion
46  void runTransform(const std::vector<bool> &apply) override;
47 
48  private:
49  // list of specific implementation(s) - This is controlled by "method"
50  void methodDEFAULT(const std::vector<bool> &apply);
51  void methodUKMO(const std::vector<bool> &apply);
52 };
53 
54 
55 /*!
56 * \brief Specific Humidity filter
57 *
58 * Performs a variable conversion from relative_humidity, temperature, and
59 * pressure to specific humidity. The newly calculated variable is included in the same
60 * obs space.
61 *
62 * Example:
63 *
64 * \code{.yaml}
65 * obs filters:
66 * - filter: Variables Transform
67 * Transform: ["SpecificHumidity"]
68 * Method: UKMO # Using UKMO method and UKMO default formulation
69 * Formulation: Sonntag # Using Sonntag formulation
70 * \endcode
71 *
72 * See VariableTransformsParameters for filter setup.
73 */
75  public:
77  const ObsFilterData &data,
78  const std::shared_ptr<ioda::ObsDataVector<int>> &flags);
79  // Run check
80  void runTransform(const std::vector<bool> &apply) override;
81 
82  private:
83  // list of specific implementation(s) - This is controlled by "method"
84  void methodDEFAULT(const std::vector<bool> &apply);
85 };
86 } // namespace ufo
87 
88 #endif // UFO_VARIABLETRANSFORMS_CAL_HUMIDITY_H_
Relative Humidity filter.
Definition: Cal_Humidity.h:40
void methodDEFAULT(const std::vector< bool > &apply)
Cal_RelativeHumidity(const VariableTransformsParameters &options, const ObsFilterData &data, const std::shared_ptr< ioda::ObsDataVector< int >> &flags)
Definition: Cal_Humidity.cc:19
void runTransform(const std::vector< bool > &apply) override
Run variable conversion.
Definition: Cal_Humidity.cc:27
void methodUKMO(const std::vector< bool > &apply)
Definition: Cal_Humidity.cc:68
Specific Humidity filter.
Definition: Cal_Humidity.h:74
Cal_SpecificHumidity(const VariableTransformsParameters &options, const ObsFilterData &data, const std::shared_ptr< ioda::ObsDataVector< int >> &flags)
void runTransform(const std::vector< bool > &apply) override
Run variable conversion.
void methodDEFAULT(const std::vector< bool > &apply)
ObsFilterData provides access to all data related to an ObsFilter.
Base class for variable conversion.
Definition: TransformBase.h:53
Options controlling the operation of the variablestansform filter.
Definition: RunCRTM.h:27