11 #ifndef OOPS_GENERIC_ERRORCOVARIANCEBUMP_H_ 12 #define OOPS_GENERIC_ERRORCOVARIANCEBUMP_H_ 17 #include <boost/noncopyable.hpp> 18 #include <boost/scoped_ptr.hpp> 27 #include "oops/util/Logger.h" 28 #include "oops/util/ObjectCounter.h" 29 #include "oops/util/Printable.h" 30 #include "oops/util/Timer.h" 33 class LocalConfiguration;
43 template <
typename MODEL>
45 public util::Printable,
46 private util::ObjectCounter<ErrorCovarianceBUMP<MODEL> >,
47 private boost::noncopyable {
53 static const std::string
classname() {
return "oops::ErrorCovarianceBUMP";}
56 const eckit::Configuration &,
const State_ &,
const State_ &);
65 void print(std::ostream &)
const override;
74 template<
typename MODEL>
77 const eckit::Configuration &
conf,
81 Log::trace() <<
"ErrorCovarianceBUMP::ErrorCovarianceBUMP starting" << std::endl;
82 const eckit::Configuration * fconf = &
conf;
98 if (
conf.has(
"input")) {
99 std::vector<eckit::LocalConfiguration> inputConfigs;
100 conf.get(
"input", inputConfigs);
101 for (
const auto & subconf : inputConfigs) {
104 std::string param = subconf.getString(
"parameter");
105 const int nstr = param.size();
106 const char *cstr = param.c_str();
115 std::ifstream infile(
"bump.test");
117 while (std::getline(infile, line))
Log::test() << line << std::endl;
120 Log::trace() <<
"ErrorCovarianceBUMP::ErrorCovarianceBUMP done" << std::endl;
125 template<
typename MODEL>
127 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::~ErrorCovarianceBUMP starting" << std::endl;
128 util::Timer timer(classname(),
"~ErrorCovarianceBUMP");
130 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::~ErrorCovarianceBUMP done" << std::endl;
135 template<
typename MODEL>
138 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doMultiply starting" << std::endl;
139 util::Timer timer(classname(),
"doMultiply");
144 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doMultiply done" << std::endl;
149 template<
typename MODEL>
152 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doInverseMultiply starting" << std::endl;
153 util::Timer timer(classname(),
"doInverseMultiply");
155 Log::info() <<
"ErrorCovarianceBUMP<MODEL>::doInverseMultiply not implemented" << std::endl;
156 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::doInverseMultiply done" << std::endl;
161 template<
typename MODEL>
163 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::randomize starting" << std::endl;
164 util::Timer timer(classname(),
"randomize");
166 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::randomize done" << std::endl;
171 template<
typename MODEL>
173 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::print starting" << std::endl;
174 util::Timer timer(classname(),
"print");
175 os <<
"ErrorCovarianceBUMP<MODEL>::print not implemented";
176 Log::trace() <<
"ErrorCovarianceBUMP<MODEL>::print done" << std::endl;
183 #endif // OOPS_GENERIC_ERRORCOVARIANCEBUMP_H_
void doMultiply(const Increment_ &, Increment_ &) const override
void delete_oobump_f90(const int &)
Model space error covariance on generic unstructured grid.
static const std::string classname()
void doInverseMultiply(const Increment_ &, Increment_ &) const override
Increment< MODEL > Increment_
void zero()
Linear algebra operators.
Encapsulates the model state.
Geometry< MODEL > Geometry_
The namespace for the main oops code.
void create_oobump_f90(int &, const int &, const eckit::Configuration *const *, const int &, const int &, const int &, const int &)
void field_to_ug(UnstructuredGrid &, const int &) const
subroutine, public info(self)
void print(std::ostream &) const override
void set_oobump_param_f90(const int &, const int &, const char *, const int &)
Abstract base class for model space error covariances.
ErrorCovarianceBUMP(const Geometry_ &, const Variables &, const eckit::Configuration &, const State_ &, const State_ &)
Increment Class: Difference between two states.
virtual ~ErrorCovarianceBUMP()
void multiply_oobump_nicas_f90(const int &, const int &)
void randomize(Increment_ &) const override
void run_oobump_drivers_f90(const int &)
void field_from_ug(const UnstructuredGrid &)
const util::DateTime validTime() const
Time.