OOPS
qg/model/ObsBiasCovariance.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2009-2016 ECMWF.
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  * In applying this licence, ECMWF does not waive the privileges and immunities
7  * granted to it by virtue of its status as an intergovernmental organisation nor
8  * does it submit to any jurisdiction.
9  */
10 
11 #ifndef QG_MODEL_OBSBIASCOVARIANCE_H_
12 #define QG_MODEL_OBSBIASCOVARIANCE_H_
13 
14 #include <ostream>
15 #include <string>
16 #include <vector>
17 #include <boost/noncopyable.hpp>
18 
19 #include "eckit/config/LocalConfiguration.h"
20 
21 #include "oops/util/ObjectCounter.h"
22 #include "oops/util/Printable.h"
23 
24 namespace qg {
25  class ObsBias;
26  class ObsBiasIncrement;
27  class ObsSpaceQG;
28 
29 // -----------------------------------------------------------------------------
30 
31 class ObsBiasCovariance : public util::Printable,
32  private boost::noncopyable,
33  private util::ObjectCounter<ObsBiasCovariance> {
34  public:
35  static const std::string classname() {return "qg::ObsBiasCovariance";}
36 
37 /// Constructor, destructor
38  ObsBiasCovariance(const ObsSpaceQG &, const eckit::Configuration &);
40 
41 /// Linear algebra operators
42  void linearize(const ObsBias &, const eckit::Configuration &) {}
43  void multiply(const ObsBiasIncrement &, ObsBiasIncrement &) const;
44  void inverseMultiply(const ObsBiasIncrement &, ObsBiasIncrement &) const;
45  void randomize(ObsBiasIncrement &) const;
46 
47  const eckit::Configuration & config() const {return conf_;}
48  bool active(const unsigned int ii) const {return variance_[ii] > 0.0;}
49 
50  private:
51  void print(std::ostream &) const;
52  const eckit::LocalConfiguration conf_;
53  std::vector<double> variance_;
54 };
55 
56 // -----------------------------------------------------------------------------
57 
58 } // namespace qg
59 
60 #endif // QG_MODEL_OBSBIASCOVARIANCE_H_
qg::ObsBiasCovariance::randomize
void randomize(ObsBiasIncrement &) const
Definition: qg/model/ObsBiasCovariance.cc:79
qg::ObsBiasCovariance::~ObsBiasCovariance
~ObsBiasCovariance()
Definition: qg/model/ObsBiasCovariance.h:39
qg
The namespace for the qg model.
Definition: qg/model/AnalyticInit.cc:13
qg::ObsBiasCovariance::multiply
void multiply(const ObsBiasIncrement &, ObsBiasIncrement &) const
Definition: qg/model/ObsBiasCovariance.cc:57
qg::ObsBiasCovariance::print
void print(std::ostream &) const
Definition: qg/model/ObsBiasCovariance.cc:90
qg::ObsBias
Class to handle observation bias parameters.
Definition: qg/model/ObsBias.h:37
qg::ObsSpaceQG
ObsSpace for QG model.
Definition: ObsSpaceQG.h:44
qg::ObsBiasCovariance::inverseMultiply
void inverseMultiply(const ObsBiasIncrement &, ObsBiasIncrement &) const
Definition: qg/model/ObsBiasCovariance.cc:68
qg::ObsBiasCovariance
Definition: qg/model/ObsBiasCovariance.h:33
qg::ObsBiasCovariance::config
const eckit::Configuration & config() const
Definition: qg/model/ObsBiasCovariance.h:47
qg::ObsBiasCovariance::ObsBiasCovariance
ObsBiasCovariance(const ObsSpaceQG &, const eckit::Configuration &)
Constructor, destructor.
Definition: qg/model/ObsBiasCovariance.cc:29
qg::ObsBiasCovariance::conf_
const eckit::LocalConfiguration conf_
Definition: qg/model/ObsBiasCovariance.h:52
qg::ObsBiasIncrement
Definition: ObsBiasIncrement.h:31
qg::ObsBiasCovariance::linearize
void linearize(const ObsBias &, const eckit::Configuration &)
Linear algebra operators.
Definition: qg/model/ObsBiasCovariance.h:42
qg::ObsBiasCovariance::active
bool active(const unsigned int ii) const
Definition: qg/model/ObsBiasCovariance.h:48
qg::ObsBiasCovariance::classname
static const std::string classname()
Definition: qg/model/ObsBiasCovariance.h:35
qg::ObsBiasCovariance::variance_
std::vector< double > variance_
Definition: qg/model/ObsBiasCovariance.h:53