8 #ifndef SABER_OOPS_ERRORCOVARIANCEBUMP_H_
9 #define SABER_OOPS_ERRORCOVARIANCEBUMP_H_
15 #include "oops/base/ModelSpaceCovarianceBase.h"
16 #include "oops/base/Variables.h"
17 #include "oops/interface/Geometry.h"
18 #include "oops/interface/Increment.h"
19 #include "oops/interface/State.h"
20 #include "oops/util/Logger.h"
21 #include "oops/util/ObjectCounter.h"
22 #include "oops/util/Printable.h"
23 #include "oops/util/Timer.h"
29 class LocalConfiguration;
43 template <
typename MODEL>
45 public util::Printable,
46 private util::ObjectCounter<ErrorCovarianceBUMP<MODEL>> {
54 static const std::string
classname() {
return "saber::ErrorCovarianceBUMP";}
57 const eckit::Configuration &,
const State_ &,
const State_ &);
69 void print(std::ostream &)
const override;
76 template<
typename MODEL>
78 const oops::Variables & vars,
79 const eckit::Configuration & conf,
81 :
oops::ModelSpaceCovarianceBase<MODEL>(xb, fg, resol, conf), ooBump_()
83 oops::Log::trace() <<
"ErrorCovarianceBUMP::ErrorCovarianceBUMP starting" << std::endl;
91 oops::Log::trace() <<
"ErrorCovarianceBUMP::ErrorCovarianceBUMP done" << std::endl;
96 template<
typename MODEL>
98 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::~ErrorCovarianceBUMP starting" << std::endl;
99 util::Timer timer(classname(),
"~ErrorCovarianceBUMP");
100 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::~ErrorCovarianceBUMP done" << std::endl;
105 template<
typename MODEL>
107 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doRandomize starting" << std::endl;
108 util::Timer timer(classname(),
"doRandomize");
109 ooBump_->randomize(dx);
110 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doRandomize done" << std::endl;
115 template<
typename MODEL>
118 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doMultiply starting" << std::endl;
119 util::Timer timer(classname(),
"doMultiply");
120 ooBump_->multiplyNicas(dxi, dxo);
121 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doMultiply done" << std::endl;
126 template<
typename MODEL>
129 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doInverseMultiply starting" << std::endl;
130 util::Timer timer(classname(),
"doInverseMultiply");
131 ooBump_->inverseMultiplyNicas(dxi, dxo);
132 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doInverseMultiply done" << std::endl;
137 template<
typename MODEL>
139 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::print starting" << std::endl;
140 util::Timer timer(classname(),
"print");
141 os <<
"ErrorCovarianceBUMP<MODEL>::print not implemented";
142 oops::Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::print done" << std::endl;
149 #endif // SABER_OOPS_ERRORCOVARIANCEBUMP_H_