UFO
CLWMatchIndexMW.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2019 UCAR
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_OBSFUNCTIONS_CLWMATCHINDEXMW_H_
9 #define UFO_FILTERS_OBSFUNCTIONS_CLWMATCHINDEXMW_H_
10 
11 #include <string>
12 #include <vector>
13 
14 #include "oops/util/parameters/Parameter.h"
15 #include "oops/util/parameters/Parameters.h"
16 #include "oops/util/parameters/RequiredParameter.h"
17 
21 #include "ufo/filters/Variable.h"
22 #include "ufo/filters/Variables.h"
24 
25 namespace ufo {
26 
27 ///
28 /// \brief Options applying to the determination of the cloud match index based on
29 /// retrieved CLW from observation and background
30 ///
31 class CLWMatchIndexMWParameters : public oops::Parameters {
32  OOPS_CONCRETE_PARAMETERS(CLWMatchIndexMWParameters, Parameters)
33 
34  public:
35  /// List of channels available for assimilation
36  oops::RequiredParameter<std::string> channelList{"channels", this};
37 
38  /// Symmetric cloud amount threshold for each channel
39  /// Channel is considered insensitivity to the cloud amount less than the threshold
40  oops::RequiredParameter<std::vector<float>> clwretClearSky{"clwret_clearsky", this};
41 
42  /// Function to retrieve the cloud liquid water from observation
43  oops::RequiredParameter<Variable> clwobsFunction{"clwobs_function", this};
44 
45  /// Function to retrieve the cloud liquid water from the simulated observation
46  oops::RequiredParameter<Variable> clwbkgFunction{"clwbkg_function", this};
47 };
48 
49 ///
50 /// \brief Determination of cloud match index based on retrieved CLW from
51 /// observation and simulated observation from background
52 /// 1: both background and observation cont contain clouds
53 /// 0: either background has cloud or observation has cloud detected
54 ///
55 class CLWMatchIndexMW : public ObsFunctionBase<float> {
56  public:
57  explicit CLWMatchIndexMW(const eckit::LocalConfiguration &
58  = eckit::LocalConfiguration());
60 
61  void compute(const ObsFilterData &,
63  const ufo::Variables & requiredVariables() const;
64  private:
66  std::vector<int> channels_;
68 };
69 
70 // -----------------------------------------------------------------------------
71 
72 } // namespace ufo
73 
74 #endif // UFO_FILTERS_OBSFUNCTIONS_CLWMATCHINDEXMW_H_
Determination of cloud match index based on retrieved CLW from observation and simulated observation ...
void compute(const ObsFilterData &, ioda::ObsDataVector< float > &) const
compute the result of the function
const ufo::Variables & requiredVariables() const
geovals required to compute the function
std::vector< int > channels_
ufo::Variables invars_
CLWMatchIndexMWParameters options_
CLWMatchIndexMW(const eckit::LocalConfiguration &=eckit::LocalConfiguration())
Options applying to the determination of the cloud match index based on retrieved CLW from observatio...
oops::RequiredParameter< Variable > clwobsFunction
Function to retrieve the cloud liquid water from observation.
oops::RequiredParameter< std::vector< float > > clwretClearSky
oops::RequiredParameter< Variable > clwbkgFunction
Function to retrieve the cloud liquid water from the simulated observation.
oops::RequiredParameter< std::string > channelList
List of channels available for assimilation.
ObsFilterData provides access to all data related to an ObsFilter.
Definition: RunCRTM.h:27