UFO
ObsErrorFactorTopoRad.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_OBSERRORFACTORTOPORAD_H_
9 #define UFO_FILTERS_OBSFUNCTIONS_OBSERRORFACTORTOPORAD_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 
20 #include "ufo/filters/Variables.h"
21 
22 namespace ufo {
23 
24 ///
25 /// \brief Options applying to observation error inflation as a function of terrain height,
26 /// channel, and surface-to-space transmittance
27 ///
28 class ObsErrorFactorTopoRadParameters : public oops::Parameters {
29  OOPS_CONCRETE_PARAMETERS(ObsErrorFactorTopoRadParameters, Parameters)
30 
31  public:
32  /// List of channels to which the observation error factor applies
33  oops::RequiredParameter<std::string> channelList{"channels", this};
34 
35  /// Name of the sensor for which the observation error factor applies
36  oops::RequiredParameter<std::string> sensor{"sensor", this};
37 
38  /// Name of the data group to which the observation error is applied (default: ObsErrorData)
39  oops::Parameter<std::string> testObserr{"test_obserr", "ObsErrorData", this};
40 
41  /// Name of the data group to which the QC flag is applied (default is QCflagsData)
42  oops::Parameter<std::string> testQCflag{"test_qcflag", "QCflagsData", this};
43 };
44 
45 ///
46 /// \brief Error Inflation Factor (EIF) as a function of terrain height, channel,
47 /// and surface-to-space transmittance
48 /// H = surface height [m]
49 /// X = surface-to-space transmittance
50 /// IASI:
51 // EIF = SQRT [ 1 / ( 1 - (1 - (2000/H)^4) * X ] for H > 2000
52 /// AMSU-A:
53 /// EIF = SQRT [ 1 / ( 2000 / H ) ] for 2000 < H < 4000 and Channels 1-6,15
54 /// EIF = SQRT [ 1 / ( 4000 / H ) ] for H > 4000 and Channel 7
55 ///
56 class ObsErrorFactorTopoRad : public ObsFunctionBase<float> {
57  public:
58  explicit ObsErrorFactorTopoRad(const eckit::LocalConfiguration &);
60 
61  void compute(const ObsFilterData &,
63  const ufo::Variables & requiredVariables() const;
64  private:
67  std::vector<int> channels_;
68 };
69 
70 // -----------------------------------------------------------------------------
71 
72 } // namespace ufo
73 
74 #endif // UFO_FILTERS_OBSFUNCTIONS_OBSERRORFACTORTOPORAD_H_
Error Inflation Factor (EIF) as a function of terrain height, channel, and surface-to-space transmitt...
ObsErrorFactorTopoRad(const eckit::LocalConfiguration &)
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
ObsErrorFactorTopoRadParameters options_
Options applying to observation error inflation as a function of terrain height, channel,...
oops::RequiredParameter< std::string > channelList
List of channels to which the observation error factor applies.
oops::Parameter< std::string > testObserr
Name of the data group to which the observation error is applied (default: ObsErrorData)
oops::RequiredParameter< std::string > sensor
Name of the sensor for which the observation error factor applies.
oops::Parameter< std::string > testQCflag
Name of the data group to which the QC flag is applied (default is QCflagsData)
ObsFilterData provides access to all data related to an ObsFilter.
Definition: RunCRTM.h:27