SOCA
ErrorCovariance.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2021 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 SOCA_COVARIANCE_ERRORCOVARIANCE_H_
9 #define SOCA_COVARIANCE_ERRORCOVARIANCE_H_
10 
11 #include <ostream>
12 #include <string>
13 
14 #include <boost/noncopyable.hpp>
15 #include <boost/scoped_ptr.hpp>
16 
17 #include "oops/base/Variables.h"
18 #include "oops/util/DateTime.h"
19 #include "oops/util/ObjectCounter.h"
20 #include "oops/util/Printable.h"
21 
22 // Forward declarations
23 namespace eckit {
24  class Configuration;
25 }
26 namespace soca {
27  class Geometry;
28  class Increment;
29  class State;
30 }
31 
32 // ----------------------------------------------------------------------------
33 
34 namespace soca {
35 
36  // Background error covariance matrix for SOCA model.
37  class ErrorCovariance : public util::Printable,
38  private boost::noncopyable,
39  private util::ObjectCounter<ErrorCovariance> {
40  public:
41  static const std::string classname() {return "soca::ErrorCovariance";}
42 
43  ErrorCovariance(const Geometry &, const oops::Variables &,
44  const eckit::Configuration &,
45  const State &, const State &);
47 
48  void linearize(const State &, const Geometry &);
49  void multiply(const Increment &, Increment &) const;
50  void inverseMultiply(const Increment &, Increment &) const;
51  void randomize(Increment &) const;
52 
53  private:
54  void print(std::ostream &) const;
56  boost::scoped_ptr<const Geometry> geom_;
57  boost::scoped_ptr<const State> traj_;
58  oops::Variables vars_;
59  };
60  // -----------------------------------------------------------------------------
61 
62 } // namespace soca
63 #endif // SOCA_COVARIANCE_ERRORCOVARIANCE_H_
void randomize(Increment &) const
void inverseMultiply(const Increment &, Increment &) const
oops::Variables vars_
ErrorCovariance(const Geometry &, const oops::Variables &, const eckit::Configuration &, const State &, const State &)
void multiply(const Increment &, Increment &) const
boost::scoped_ptr< const State > traj_
static const std::string classname()
boost::scoped_ptr< const Geometry > geom_
void print(std::ostream &) const
void linearize(const State &, const Geometry &)
Geometry handles geometry for SOCA model.
Definition: Geometry.h:48
Increment Class: Difference between two states.
Definition: Increment.h:61
SOCA model state.
Definition: State.h:48