Go to the documentation of this file.
18 #include "eckit/config/Configuration.h"
21 #include "oops/util/Logger.h"
29 if (conf.has(
"obs bias error")) {
30 const eckit::LocalConfiguration covconf(conf,
"obs bias error");
31 active_[0] = covconf.has(
"stream");
32 active_[1] = covconf.has(
"uwind");
33 active_[2] = covconf.has(
"vwind");
34 active_[3] = covconf.has(
"wspeed");
37 std::string strn =
"";
39 if (jj > 0) strn +=
", ";
47 if (on) {oops::Log::trace() <<
"ObsBiasIncrement created : " << strn << std::endl;}
52 : bias_(
ObsBias::ntypes, 0.0), active_(other.active_)
61 const eckit::Configuration &)
62 : bias_(
ObsBias::ntypes, 0.0), active_(other.active_)
76 bias_[jj] = b1[jj] - b2[jj];
131 if (ii > 0) zz = std::sqrt(zz/ii);
136 size_t nn =
bias_.size();
141 vect.insert(vect.end(),
bias_.begin(),
bias_.end());
142 oops::Log::trace() <<
"ObsBiasIncrement::serialize done" << std::endl;
146 for (
unsigned int jj = 0; jj <
bias_.size(); ++jj) {
147 bias_[jj] = vect[index];
150 oops::Log::trace() <<
"ObsBiasIncrement::deserialize done" << std::endl;
155 std::string strn =
"";
157 if (jj > 0) strn +=
", ";
160 std::ostringstream strs;
167 if (on) os << std::endl <<
"ObsBiasIncrement = " << strn;
double dot_product_with(const ObsBiasIncrement &) const
The namespace for the qg model.
ObsBiasIncrement()
Constructor, destructor.
ObsBiasIncrement & operator-=(const ObsBiasIncrement &)
Class to handle observation bias parameters.
std::vector< bool > active_
size_t serialSize() const override
Serialization.
void print(std::ostream &) const override
ObsBiasIncrement & operator=(const ObsBiasIncrement &)
static const unsigned int ntypes
std::vector< double > bias_
void diff(const ObsBias &, const ObsBias &)
Linear algebra operators.
void serialize(std::vector< double > &) const override
ObsBiasIncrement & operator+=(const ObsBiasIncrement &)
void deserialize(const std::vector< double > &, size_t &) override
void axpy(const double, const ObsBiasIncrement &)
ObsBiasIncrement & operator*=(const double)