13 #include "ioda/ObsSpace.h"
14 #include "ioda/ObsVector.h"
16 #include "oops/base/Variables.h"
17 #include "oops/util/Logger.h"
18 #include "oops/util/missingValues.h"
20 #include "ufo/GeoVaLs.h"
30 const eckit::Configuration & config)
33 oops::Log::trace() <<
"ObsIdentityTLAD constructor starting" << std::endl;
38 oops::Log::trace() <<
"ObsIdentityTLAD constructor finished" << std::endl;
44 oops::Log::trace() <<
"ObsIdentityTLAD destructed" << std::endl;
51 oops::Log::trace() <<
"ObsIdentityTLAD: trajectory set" << std::endl;
57 oops::Log::trace() <<
"ObsIdentityTLAD: TL observation operator starting" << std::endl;
59 std::vector<double> vec(dy.nlocs());
61 const std::string& varname = dy.varnames().variables()[jvar];
64 for (
size_t jloc = 0; jloc < dy.nlocs(); ++jloc) {
65 const size_t idx = jloc * dy.nvars() + jvar;
70 oops::Log::trace() <<
"ObsIdentityTLAD: TL observation operator finished" << std::endl;
76 oops::Log::trace() <<
"ObsIdentityTLAD: adjoint observation operator starting" << std::endl;
80 std::vector<double> vec(dy.nlocs());
82 const std::string& varname = dy.varnames().variables()[jvar];
86 for (
size_t jloc = 0; jloc < dy.nlocs(); ++jloc) {
87 const size_t idx = jloc * dy.nvars() + jvar;
95 oops::Log::trace() <<
"ObsIdentityTLAD: adjoint observation operator finished" << std::endl;
101 os <<
"ObsIdentityTLAD operator" << std::endl;
GeoVaLs: geophysical values at locations.
void getAtLevel(std::vector< double > &, const std::string &, const int) const
Get GeoVaLs at a specified level.
void putAtLevel(const std::vector< double > &vals, const std::string &var, const int lev) const
Put GeoVaLs for double variable var at level lev.
ObsIdentityTLAD(const ioda::ObsSpace &, const eckit::Configuration &)
oops::Variables requiredVars_
Required variables.
std::vector< int > operatorVarIndices_
Indices of operator variables.
void print(std::ostream &) const override
void setTrajectory(const GeoVaLs &, ObsDiagnostics &) override
Obs Operator.
void simulateObsAD(GeoVaLs &, const ioda::ObsVector &) const override
virtual ~ObsIdentityTLAD()
oops::Variables operatorVars_
Operator variables.
void simulateObsTL(const GeoVaLs &, ioda::ObsVector &) const override
static LinearObsOperatorMaker< ObsIdentityTLAD > makerIdentityTL_("Identity")
void getOperatorVariables(const eckit::Configuration &conf, const oops::Variables &simulatedVariables, oops::Variables &operatorVariables, std::vector< int > &operatorVariableIndices)