MPAS-JEDI
ErrorCovarianceMPAS.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 MPASJEDI_ERRORCOVARIANCEMPAS_H_
9 #define MPASJEDI_ERRORCOVARIANCEMPAS_H_
10 
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 
15 #include "eckit/config/Configuration.h"
16 #include "eckit/memory/NonCopyable.h"
17 
18 #include "oops/util/DateTime.h"
19 #include "oops/util/ObjectCounter.h"
20 #include "oops/util/Printable.h"
21 
22 #include "mpasjedi/Fortran.h"
23 #include "mpasjedi/GeometryMPAS.h"
24 
25 // Forward declarations
26 namespace oops {
27  class Variables;
28 }
29 
30 namespace mpas {
31  class IncrementMPAS;
32  class StateMPAS;
33 
34 // -----------------------------------------------------------------------------
35 /// Background error covariance matrix for LFRic
36 
37 class ErrorCovarianceMPAS : public util::Printable,
38  private eckit::NonCopyable,
39  private util::ObjectCounter<ErrorCovarianceMPAS> {
40  public:
41  static const std::string classname() {return "mpas::ErrorCovarianceMPAS";}
42 
43  ErrorCovarianceMPAS(const GeometryMPAS &, const oops::Variables &,
44  const eckit::Configuration &, const StateMPAS &,
45  const StateMPAS &);
47 
48  void linearize(const StateMPAS &, const GeometryMPAS &);
49  void multiply(const IncrementMPAS &, IncrementMPAS &) const;
50  void inverseMultiply(const IncrementMPAS &, IncrementMPAS &) const;
51  void randomize(IncrementMPAS &) const;
52 
53  private:
54  void print(std::ostream &) const;
56  std::unique_ptr<const GeometryMPAS> geom_;
57  util::DateTime time_;
58 };
59 // -----------------------------------------------------------------------------
60 
61 } // namespace mpas
62 #endif // MPASJEDI_ERRORCOVARIANCEMPAS_H_
Background error covariance matrix for LFRic.
void inverseMultiply(const IncrementMPAS &, IncrementMPAS &) const
void randomize(IncrementMPAS &) const
void multiply(const IncrementMPAS &, IncrementMPAS &) const
std::unique_ptr< const GeometryMPAS > geom_
void linearize(const StateMPAS &, const GeometryMPAS &)
void print(std::ostream &) const
static const std::string classname()
ErrorCovarianceMPAS(const GeometryMPAS &, const oops::Variables &, const eckit::Configuration &, const StateMPAS &, const StateMPAS &)
GeometryMPAS handles geometry for MPAS model.
Definition: GeometryMPAS.h:37
Increment Class: Difference between two states.
Definition: IncrementMPAS.h:57
MPAS model state.
Definition: StateMPAS.h:51
int F90bmat
Definition: Fortran.h:48