8 #ifndef UFO_ERRORS_OBSERRORDIAGONAL_H_
9 #define UFO_ERRORS_OBSERRORDIAGONAL_H_
14 #include "eckit/config/Configuration.h"
16 #include "ioda/ObsVector.h"
18 #include "oops/interface/ObsErrorBase.h"
19 #include "oops/util/parameters/Parameter.h"
20 #include "oops/util/parameters/Parameters.h"
39 oops::Parameter<double>
pert{
"random amplitude", 1.0,
this};
50 static const std::string
classname() {
return "ufo::ObsErrorDiagonal";}
53 const eckit::mpi::Comm &timeComm);
56 void update(
const ioda::ObsVector &)
override;
59 void multiply(ioda::ObsVector &)
const override;
65 void randomize(ioda::ObsVector &)
const override;
68 void save(
const std::string &)
const override;
74 std::unique_ptr<ioda::ObsVector>
getObsErrors()
const override;
80 void print(std::ostream &)
const override;
Diagonal observation error covariance matrix.
void randomize(ioda::ObsVector &) const override
Generate random perturbation.
std::unique_ptr< ioda::ObsVector > getInverseVariance() const override
Return inverseVariance.
void inverseMultiply(ioda::ObsVector &) const override
Multiply a Departure by .
ObsErrorDiagonalParameters Parameters_
void print(std::ostream &) const override
static const std::string classname()
ObsErrorDiagonal(const Parameters_ &, ioda::ObsSpace &, const eckit::mpi::Comm &timeComm)
void update(const ioda::ObsVector &) override
Update after obs errors potentially changed.
ioda::ObsVector inverseVariance_
double getRMSE() const override
Get mean error for Jo table.
void multiply(ioda::ObsVector &) const override
Multiply a Departure by .
void save(const std::string &) const override
Save obs errors.
std::unique_ptr< ioda::ObsVector > getObsErrors() const override
Get obs errors std deviation.
Parameters for diagonal obs errors.
oops::Parameter< double > pert
perturbation amplitude multiplier