UFO
LAMDomainCheck.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2020 NOAA NWS NCEP EMC
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_LAMDOMAINCHECK_LAMDOMAINCHECK_H_
9 #define UFO_FILTERS_OBSFUNCTIONS_LAMDOMAINCHECK_LAMDOMAINCHECK_H_
10 
11 #include <string>
12 #include <vector>
13 
14 #include "ioda/ObsDataVector.h"
15 
16 #include "oops/util/parameters/Parameter.h"
17 #include "oops/util/parameters/RequiredParameter.h"
18 
22 #include "ufo/filters/Variables.h"
24 
25 namespace ufo {
26 
27 class LAMDomainCheckParameters : public oops::Parameters {
28  OOPS_CONCRETE_PARAMETERS(LAMDomainCheckParameters, Parameters)
29 
30  public:
31  oops::RequiredParameter<std::string> mapproj{"map_projection", this};
32  oops::Parameter<float> esg_a{"a", 0.0f, this};
33  oops::Parameter<float> esg_k{"k", 0.0f, this};
34  oops::Parameter<float> esg_plat{"plat", 0.0f, this};
35  oops::Parameter<float> esg_plon{"plon", 0.0f, this};
36  oops::Parameter<float> esg_pazi{"pazi", 0.0f, this};
37  oops::Parameter<float> esg_dx{"dx", 1.0f, this};
38  oops::Parameter<float> esg_dy{"dy", 1.0f, this};
39  oops::Parameter<int> esg_npx{"npx", 2, this};
40  oops::Parameter<int> esg_npy{"npy", 2, this};
41  oops::Parameter<bool> save{"save", false, this};
42 
43 // for a circle domain on sphere with central lat/lon in degree
44 // and radius in km
45  oops::Parameter<float> cenlat{"cenlat", 0.0f, this};
46  oops::Parameter<float> cenlon{"cenlon", 0.0f, this};
47  oops::Parameter<float> radius{"radius", 100.0f, this};
48 };
49 
50 // -----------------------------------------------------------------------------
51 
52 class LAMDomainCheck : public ObsFunctionBase<float> {
53  public:
54  static const std::string classname() {return "LAMDomainCheck";}
55 
56  explicit LAMDomainCheck(const eckit::LocalConfiguration &
57  = eckit::LocalConfiguration());
59 
60  void compute(const ObsFilterData &, ioda::ObsDataVector<float> &) const;
61  const ufo::Variables & requiredVariables() const;
62  private:
65 };
66 
67 // -----------------------------------------------------------------------------
68 } // namespace ufo
69 
70 #endif // UFO_FILTERS_OBSFUNCTIONS_LAMDOMAINCHECK_LAMDOMAINCHECK_H_
static const std::string classname()
void compute(const ObsFilterData &, ioda::ObsDataVector< float > &) const
LAMDomainCheck::compute.
const ufo::Variables & requiredVariables() const
geovals required to compute the function
ufo::Variables invars_
LAMDomainCheck(const eckit::LocalConfiguration &=eckit::LocalConfiguration())
LAMDomainCheckParameters options_
oops::Parameter< float > cenlon
oops::Parameter< bool > save
oops::Parameter< float > esg_k
oops::RequiredParameter< std::string > mapproj
oops::Parameter< float > esg_a
oops::Parameter< int > esg_npy
oops::Parameter< float > esg_dx
oops::Parameter< float > esg_plat
oops::Parameter< float > esg_dy
oops::Parameter< int > esg_npx
oops::Parameter< float > radius
oops::Parameter< float > cenlat
oops::Parameter< float > esg_pazi
oops::Parameter< float > esg_plon
ObsFilterData provides access to all data related to an ObsFilter.
Definition: RunCRTM.h:27