8 #ifndef UFO_ERRORS_OBSERRORCROSSVARCOV_H_
9 #define UFO_ERRORS_OBSERRORCROSSVARCOV_H_
16 #include "ioda/ObsVector.h"
18 #include "oops/interface/ObsErrorBase.h"
19 #include "oops/util/parameters/Parameters.h"
20 #include "oops/util/parameters/RequiredParameter.h"
39 oops::RequiredParameter<std::string>
inputFile{
"input file",
this};
59 const eckit::mpi::Comm &timeComm);
62 void update(
const ioda::ObsVector & stddev)
override;
68 void multiply(ioda::ObsVector & y)
const override;
77 void randomize(ioda::ObsVector & y)
const override;
80 void save(
const std::string & name)
const override;
86 std::unique_ptr<ioda::ObsVector>
getObsErrors()
const override;
93 void print(std::ostream &)
const override;
Observation error covariance matrix with cross-variable correlations.
ObsErrorCrossVarCov(const Parameters_ &, ioda::ObsSpace &, const eckit::mpi::Comm &timeComm)
Initialize observation errors.
void randomize(ioda::ObsVector &y) const override
Generate y as a random perturbation.
void multiply(ioda::ObsVector &y) const override
std::unique_ptr< ioda::ObsVector > getObsErrors() const override
Return obs errors std deviation.
ObsErrorCrossVarCovParameters Parameters_
Eigen::MatrixXd varcorrelations_
Correlations between variables.
void save(const std::string &name) const override
Save obs error standard deviations under name group name.
void update(const ioda::ObsVector &stddev) override
Update obs error standard deviations to be equal to stddev.
ioda::ObsVector stddev_
Observation error standard deviations.
void inverseMultiply(ioda::ObsVector &y) const override
void print(std::ostream &) const override
Print covariance details (for logging)
std::unique_ptr< ioda::ObsVector > getInverseVariance() const override
Return inverse of obs error variance.
double getRMSE() const override
Return RMS of obs error standard deviations.
Parameters for obs errors with cross-variable correlations.
oops::RequiredParameter< std::string > inputFile
Input file containing correlations.