13 #include "eckit/mpi/Comm.h"
14 #include "ioda/ObsSpace.h"
15 #include "oops/util/Logger.h"
16 #include "ufo/ObsBias.h"
24 : vars_(odb.obsvariables()) {
25 oops::Log::trace() <<
"ufo::ObsBiasIncrement::create starting." << std::endl;
38 oops::Log::trace() <<
"ufo::ObsBiasIncrement::create done." << std::endl;
44 : prednames_(other.prednames_), vars_(other.vars_) {
45 oops::Log::trace() <<
"ufo::ObsBiasIncrement::copy ctor starting" << std::endl;
54 oops::Log::trace() <<
"ufo::ObsBiasIncrement::copy ctor done." << std::endl;
127 throw eckit::NotImplemented(
"ufo::ObsBiasIncrement::serialize not implemented", Here());
135 throw eckit::NotImplemented(
"ufo::ObsBiasIncrement::deserialize not implemented", Here());
144 Eigen::Map<const Eigen::MatrixXd>
146 os <<
"ufo::ObsBiasIncrement::print " << std::endl;
147 os <<
"---------------------------------------------------------------" << std::endl;
148 for (std::size_t p = 0; p <
prednames_.size(); ++p) {
149 os << std::fixed << std::setw(20) <<
prednames_[p]
150 <<
": Min= " << std::setw(15) << std::setprecision(8)
151 << coeffs.row(p).minCoeff()
152 <<
", Max= " << std::setw(15) << std::setprecision(8)
153 << coeffs.row(p).maxCoeff()
154 <<
", Norm= " << std::setw(15) << std::setprecision(8)
155 << coeffs.row(p).norm()
158 os <<
"---------------------------------------------------------------" << std::endl;
159 os <<
"ufo::ObsBiasIncrement::print done" << std::endl;
const Eigen::VectorXd & data() const
Return bias correction coefficients (for variable predictors)
Contains increments to bias correction coefficients.
void serialize(std::vector< double > &) const
ObsBiasIncrement & operator-=(const ObsBiasIncrement &)
double dot_product_with(const ObsBiasIncrement &) const
void axpy(const double, const ObsBiasIncrement &)
ObsBiasIncrement & operator+=(const ObsBiasIncrement &)
Eigen::VectorXd biascoeffsinc_
Bias coefficient increments.
std::vector< std::string > prednames_
void diff(const ObsBias &, const ObsBias &)
ObsBiasIncrement & operator=(const ObsBiasIncrement &)
std::size_t serialSize() const
oops::Variables vars_
Variables that need to be bias-corrected.
ObsBiasIncrement & operator*=(const double)
ObsBiasIncrement(const ioda::ObsSpace &odb, const Parameters_ ¶ms)
void print(std::ostream &) const
void deserialize(const std::vector< double > &, std::size_t &)
Parameters influencing the bias correction process.
oops::Parameter< StaticOrVariationalBCParameters > variationalBC
List of predictors with coefficients determined by variational analysis (VarBC).
static std::unique_ptr< PredictorBase > create(const PredictorParametersBase ¶meters, const oops::Variables &vars)
Create and return a new predictor.
Contains a polymorphic parameter holding an instance of a subclass of PredictorParametersBase.