12 #ifndef OOPS_GENERIC_OBSERRORDIAG_H_
13 #define OOPS_GENERIC_OBSERRORDIAG_H_
18 #include "eckit/config/Configuration.h"
22 #include "oops/util/Logger.h"
23 #include "oops/util/parameters/Parameter.h"
24 #include "oops/util/parameters/Parameters.h"
33 Parameter<double>
pert{
"random amplitude", 1.0,
this};
38 template<
typename OBS>
59 void save(
const std::string &)
const override;
71 void print(std::ostream &)
const override;
79 template<
typename OBS>
81 : stddev_(obsgeom,
"ObsError"), inverseVariance_(obsgeom)
87 Log::trace() <<
"ObsErrorDiag:ObsErrorDiag constructed nobs = " <<
stddev_.
nobs() << std::endl;
92 template<
typename OBS>
95 inverseVariance_ = stddev_;
96 inverseVariance_ *= stddev_;
98 Log::info() <<
"ObsErrorDiag covariance updated " << stddev_.nobs() << std::endl;
103 template<
typename OBS>
105 dy /= inverseVariance_;
110 template<
typename OBS>
112 dy *= inverseVariance_;
117 template<
typename OBS>
126 template<
typename OBS>
133 template<
typename OBS>
135 os <<
"Diagonal observation error covariance" << std::endl << stddev_;
Base class for generic implementations of observation error covariance matrices.
Diagonal observation error covariance matrix.
double getRMSE() const override
Get mean std deviation of errors for Jo table.
void save(const std::string &) const override
Save obs errors.
void print(std::ostream &) const override
ObsVector_ inverseVariance() const override
Get inverseVariance.
void inverseMultiply(ObsVector_ &) const override
Multiply a Departure by .
void multiply(ObsVector_ &) const override
Multiply a Departure by .
ObsVector_ inverseVariance_
ObsSpace< OBS > ObsSpace_
void randomize(ObsVector_ &) const override
Generate random perturbation.
ObsVector_ obserrors() const override
Get obs errors std deviation.
ObsErrorDiag(const eckit::Configuration &, const ObsSpace_ &)
ObsErrorDiagParameters options_
void update(const ObsVector_ &) override
Update after obs errors potentially changed.
ObsVector< OBS > ObsVector_
Parameters for diagonal obs errors.
Parameter< double > pert
perturbation amplitude multiplier
unsigned int nobs() const
number of non-masked out observations (across all MPI tasks)
The namespace for the main oops code.