FV3 Bundle
ErrorCovarianceFV3JEDI.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017 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 SRC_ERRORCOVARIANCE_ERRORCOVARIANCEFV3JEDI_H_
9 #define SRC_ERRORCOVARIANCE_ERRORCOVARIANCEFV3JEDI_H_
10 
11 #include <ostream>
12 #include <string>
13 #include <boost/noncopyable.hpp>
14 #include <boost/scoped_ptr.hpp>
15 
17 #include "GeometryFV3JEDI.h"
18 #include "eckit/config/Configuration.h"
19 #include "oops/util/DateTime.h"
20 #include "oops/util/ObjectCounter.h"
21 #include "oops/util/Printable.h"
22 
23 // Forward declarations
24 namespace oops {
25  class Variables;
26 }
27 
28 namespace fv3jedi {
29  class IncrementFV3JEDI;
30  class StateFV3JEDI;
31 
32 // -----------------------------------------------------------------------------
33 /// Background error covariance matrix for FV3JEDI
34 
35 class ErrorCovarianceFV3JEDI : public util::Printable,
36  private boost::noncopyable,
37  private util::ObjectCounter<ErrorCovarianceFV3JEDI> {
38  public:
39  static const std::string classname()
40  {return "fv3jedi::ErrorCovarianceFV3JEDI";}
41 
43  const eckit::Configuration &, const StateFV3JEDI &,
44  const StateFV3JEDI &);
46 
47  void linearize(const StateFV3JEDI &, const GeometryFV3JEDI &);
48  void multiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const;
49  void inverseMultiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const;
50  void randomize(IncrementFV3JEDI &) const;
51 
52  private:
53  void print(std::ostream &) const;
55  boost::scoped_ptr<const GeometryFV3JEDI> geom_;
56  util::DateTime time_;
57 };
58 // -----------------------------------------------------------------------------
59 
60 } // namespace fv3jedi
61 #endif // SRC_ERRORCOVARIANCE_ERRORCOVARIANCEFV3JEDI_H_
Background error covariance matrix for FV3JEDI.
void linearize(const StateFV3JEDI &, const GeometryFV3JEDI &)
The namespace for the main oops code.
ErrorCovarianceFV3JEDI(const GeometryFV3JEDI &, const oops::Variables &, const eckit::Configuration &, const StateFV3JEDI &, const StateFV3JEDI &)
static const std::string classname()
void print(std::ostream &) const
void randomize(IncrementFV3JEDI &) const
GeometryFV3JEDI handles geometry for FV3JEDI model.
void multiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
void inverseMultiply(const IncrementFV3JEDI &, IncrementFV3JEDI &) const
boost::scoped_ptr< const GeometryFV3JEDI > geom_