8 #ifndef OOPS_INTERFACE_OBSERRORBASE_H_
9 #define OOPS_INTERFACE_OBSERRORBASE_H_
14 #include "eckit/system/ResourceUsage.h"
19 #include "oops/util/ObjectCounter.h"
20 #include "oops/util/Printable.h"
42 template <
typename OBS>
71 this->
update(dy.obsvector());
83 virtual void multiply(ObsVector_ &dy)
const = 0;
109 template <
class OBS,
class T>
119 std::unique_ptr<ObsErrorBase_>
make(
const eckit::Configuration & conf,
Base class for generic implementations of observation error covariance matrices.
A factory creating instances of concrete subclasses of ObsErrorBase.
Base class for OBS-specific implementations of the ObsError interface.
void randomize(ObsVector< OBS > &dy) const final
Generate random perturbation in dy.
virtual void multiply(ObsVector_ &dy) const =0
Multiply a Departure dy by .
void multiply(ObsVector< OBS > &dy) const final
Multiply a Departure dy by .
virtual std::unique_ptr< ObsVector_ > getObsErrors() const =0
ObsVector< OBS > obserrors() const final
virtual void inverseMultiply(ObsVector_ &dy) const =0
Multiply a Departure dy by .
const eckit::mpi::Comm & timeComm_
ObsErrorBase(const eckit::mpi::Comm &timeComm)
ObsVector< OBS > inverseVariance() const final
Return the vector of inverse obs error variances.
virtual std::unique_ptr< ObsVector_ > getInverseVariance() const =0
Return the vector of inverse obs error variances.
virtual void randomize(ObsVector_ &dy) const =0
Generate a random perturbation in dy.
virtual void update(const ObsVector_ &stddev)=0
Set the diagonal of the covariance matrix to stddev squared.
void update(const ObsVector< OBS > &dy) final
Set the diagonal of the covariance matrix to stddev squared.
OBS::ObsVector ObsVector_
void inverseMultiply(ObsVector< OBS > &dy) const final
Multiply a Departure dy by .
A subclass of ObsErrorFactory able to create instances of T (a concrete subclass of interface::ObsErr...
std::unique_ptr< ObsErrorBase_ > make(const eckit::Configuration &conf, const ObsSpace_ &obsspace) override
ObsErrorMaker(const std::string &name)
oops::ObsErrorBase< OBS > ObsErrorBase_
oops::ObsErrorFactory< OBS > ObsErrorFactory_
oops::ObsSpace< OBS > ObsSpace_
The namespace for the main oops code.