UFO
HydrometeorCheckATMS.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_HYDROMETEORCHECKATMS_H_
9 #define UFO_FILTERS_OBSFUNCTIONS_HYDROMETEORCHECKATMS_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 
22 #include "ufo/filters/Variable.h"
23 #include "ufo/filters/Variables.h"
25 
26 namespace ufo {
27 
28 ///
29 /// \brief Options controling the cloud and precipitation checks for WM sensors
30 ///
31 class HydrometeorCheckATMSParameters : public oops::Parameters {
32  OOPS_CONCRETE_PARAMETERS(HydrometeorCheckATMSParameters, Parameters)
33 
34  public:
35  /// List of channels available for assimilation
36  oops::RequiredParameter<std::string> channelList{"channels", this};
37 
38  /// Observation error for each channel under clear-sky condition
39  oops::RequiredParameter<std::vector<float>> obserrClearSky{"obserr_clearsky", this};
40 
41  /// Function used to estimate observation error based on symmetric cloud amount
42  /// (ObsErrorModelRamp)
43  oops::RequiredParameter<Variable> obserrFunction{"obserr_function", this};
44 
45  /// Function used to retrieve the cloud liquid water from observation (CLWRetMW)
46  oops::RequiredParameter<Variable> clwretFunction{"clwret_function", this};
47 
48  /// Name of the HofX group used to replace the default group (default is HofX)
49  oops::Parameter<std::string> testHofX{"test_hofx", "HofX", this};
50 
51  /// Name of the group for bias correction used to replace the default group (default is
52  /// ObsBiasData)
53  /// Example: use observation bias correction values from GSI
54  /// test_bias: GsiObsBias
55  oops::Parameter<std::string> testBias{"test_bias", "ObsBiasData", this};
56 
57  /// Name of the group for bias correction terms used to replace the default group
58  /// (default is ObsBiasTerm)
59  /// Example: use observation bias correction terms from GSI
60  /// test_biasterm: GsiObsBiasTerm
61  oops::Parameter<std::string> testBiasTerm{"test_biasterm", "ObsBiasTerm", this};
62 };
63 
64 ///
65 /// \brief Cloud and precipitation checks for ATMS
66 /// Checks for all observations:
67 /// (1) Sanity check on observaton values
68 /// (2) Sanity check on retrieved CLW values
69 /// Checks for observation over ocean include:
70 /// (1) Scattering check based on 54.4GHz channel
71 /// (2) Scattering check based on 53.6GHz channel
72 /// (3) Sensitivity to surface emissivity
73 /// Checks observation over non-ocean surface include:
74 /// (1) Scattering check based on 54.4GHz channel
75 /// (2) Thick cloud check based on 52.8GHz channel
76 /// (3) Sensitivity to surface emissivity
77 /// Output of this function:
78 /// 0 = channel is not affected by thick clouds and precipitation
79 /// 1 = channel is affected by thick clouds and precipitataion
80 ///
81 class HydrometeorCheckATMS : public ObsFunctionBase<float> {
82  public:
83  explicit HydrometeorCheckATMS(const eckit::LocalConfiguration &);
85 
86  void compute(const ObsFilterData &,
88  const ufo::Variables & requiredVariables() const;
89  private:
91  std::vector<int> channels_;
93 };
94 
95 // -----------------------------------------------------------------------------
96 
97 } // namespace ufo
98 
99 #endif // UFO_FILTERS_OBSFUNCTIONS_HYDROMETEORCHECKATMS_H_
Cloud and precipitation checks for ATMS Checks for all observations: (1) Sanity check on observaton v...
HydrometeorCheckATMS(const eckit::LocalConfiguration &)
HydrometeorCheckATMSParameters options_
const ufo::Variables & requiredVariables() const
geovals required to compute the function
void compute(const ObsFilterData &, ioda::ObsDataVector< float > &) const
compute the result of the function
Options controling the cloud and precipitation checks for WM sensors.
oops::Parameter< std::string > testBiasTerm
oops::RequiredParameter< std::vector< float > > obserrClearSky
Observation error for each channel under clear-sky condition.
oops::RequiredParameter< std::string > channelList
List of channels available for assimilation.
oops::RequiredParameter< Variable > clwretFunction
Function used to retrieve the cloud liquid water from observation (CLWRetMW)
oops::RequiredParameter< Variable > obserrFunction
oops::Parameter< std::string > testHofX
Name of the HofX group used to replace the default group (default is HofX)
oops::Parameter< std::string > testBias
ObsFilterData provides access to all data related to an ObsFilter.
Definition: RunCRTM.h:27