12 #include "ioda/ObsVector.h"
14 #include "ufo/Locations.h"
15 #include "ufo/ObsBias.h"
17 #include "ufo/ObsDiagnostics.h"
28 oops::Variables operatorVars;
29 operatorVars +=
oper_->simulatedVars();
30 oops::Variables obsSpaceVars;
31 obsSpaceVars += os.obsvariables();
32 if (!(operatorVars == obsSpaceVars))
33 throw eckit::UserError(
"The list of variables simulated by the obs operator differs from "
34 "the list of simulated variables in the obs space",
43 std::vector<float> lons(
odb_.nlocs());
44 std::vector<float> lats(
odb_.nlocs());
45 std::vector<util::DateTime> times(
odb_.nlocs());
46 odb_.get_db(
"MetaData",
"latitude", lats);
47 odb_.get_db(
"MetaData",
"longitude", lons);
48 odb_.get_db(
"MetaData",
"datetime", times);
50 oper_->setTrajectory(gvals, ydiags);
53 biasoper_->setTrajectory(gvals, bias, ydiags);
61 oper_->simulateObsTL(gvals, yy);
63 ioda::ObsVector ybiasinc(
odb_);
64 biasoper_->computeObsBiasTL(gvals, bias, ybiasinc);
73 oper_->simulateObsAD(gvals, yy);
75 ioda::ObsVector ybiasinc(yy);
76 biasoper_->computeObsBiasAD(gvals, bias, ybiasinc);
83 return oper_->requiredVars();
GeoVaLs: geophysical values at locations.
Tangent linear and adjoint of the linear combination bias correction operator.
Linear obs operator factory.
void print(std::ostream &) const
void setTrajectory(const GeoVaLs &, const ObsBias &)
Obs Operator.
std::unique_ptr< LinearObsOperatorBase > oper_
const oops::Variables & requiredVars() const
Operator input required from Model.
void simulateObsTL(const GeoVaLs &, ioda::ObsVector &, const ObsBiasIncrement &) const
void simulateObsAD(GeoVaLs &, const ioda::ObsVector &, ObsBiasIncrement &) const
LinearObsOperator(ioda::ObsSpace &, const Parameters_ &)
std::unique_ptr< LinearObsBiasOperator > biasoper_
Contains a polymorphic parameter holding an instance of a subclass of ObsOperatorParametersBase.
Locations class to handle simple lat-lon-time locations.
const oops::Variables & requiredHdiagnostics() const
Contains increments to bias correction coefficients.