UFO
ObsOperator.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2018 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #include <vector>
9 
10 #include "ufo/ObsOperator.h"
11 
12 #include "eckit/config/Configuration.h"
13 
14 #include "ioda/ObsSpace.h"
15 #include "ioda/ObsVector.h"
16 
17 #include "oops/base/Variables.h"
18 #include "oops/util/DateTime.h"
19 
20 #include "ufo/GeoVaLs.h"
21 #include "ufo/Locations.h"
22 #include "ufo/ObsBias.h"
23 #include "ufo/ObsDiagnostics.h"
24 #include "ufo/ObsOperatorBase.h"
25 
26 namespace ufo {
27 
28 // -----------------------------------------------------------------------------
29 
30 ObsOperator::ObsOperator(ioda::ObsSpace & os, const eckit::Configuration & conf)
31  : oper_(ObsOperatorFactory::create(os, conf)), odb_(os)
32 {}
33 
34 // -----------------------------------------------------------------------------
35 
37 
38 // -----------------------------------------------------------------------------
39 
40 void ObsOperator::simulateObs(const GeoVaLs & gvals, ioda::ObsVector & yy,
41  const ObsBias & bias, ObsDiagnostics & ydiags) const {
42  oper_->simulateObs(gvals, yy, ydiags);
43  if (bias) {
44  ioda::ObsVector ybias(odb_);
45  bias.computeObsBias(ybias, ydiags, bias.computePredictors(gvals, ydiags));
46  ybias.save("ObsBias");
47  }
48 }
49 
50 // -----------------------------------------------------------------------------
51 
52 const oops::Variables & ObsOperator::requiredVars() const {
53  return oper_->requiredVars();
54 }
55 
56 // -----------------------------------------------------------------------------
57 
58 std::unique_ptr<Locations> ObsOperator::locations(const util::DateTime & t1,
59  const util::DateTime & t2) const {
60  return oper_->locations(t1, t2);
61 }
62 
63 // -----------------------------------------------------------------------------
64 
65 void ObsOperator::print(std::ostream & os) const {
66  os << *oper_;
67 }
68 
69 // -----------------------------------------------------------------------------
70 
71 } // namespace ufo
ObsBias.h
ObsOperator.h
ufo::ObsOperator::odb_
ioda::ObsSpace & odb_
Definition: ObsOperator.h:63
ufo::ObsBias::computePredictors
std::vector< ioda::ObsVector > computePredictors(const GeoVaLs &, const ObsDiagnostics &) const
Definition: ObsBias.cc:292
ufo
Definition: RunCRTM.h:27
ufo::ObsOperator::oper_
std::unique_ptr< ObsOperatorBase > oper_
Definition: ObsOperator.h:62
ufo::ObsOperator::locations
std::unique_ptr< Locations > locations(const util::DateTime &, const util::DateTime &) const
Operator locations.
Definition: ObsOperator.cc:58
ufo::ObsOperator::print
void print(std::ostream &) const
Definition: ObsOperator.cc:65
ObsOperatorBase.h
ufo::ObsBias
Class to handle observation bias parameters.
Definition: ObsBias.h:44
ufo::ObsDiagnostics
Definition: src/ufo/ObsDiagnostics.h:35
ufo::ObsOperator::simulateObs
void simulateObs(const GeoVaLs &, ioda::ObsVector &, const ObsBias &, ObsDiagnostics &) const
Obs Operator.
Definition: ObsOperator.cc:40
ufo::ObsOperator::requiredVars
const oops::Variables & requiredVars() const
Operator input required from Model.
Definition: ObsOperator.cc:52
ufo::ObsOperatorFactory
Obs Operator Factory.
Definition: ObsOperatorBase.h:61
ufo::GeoVaLs
GeoVaLs: geophysical values at locations.
Definition: src/ufo/GeoVaLs.h:39
ufo::ObsBias::computeObsBias
void computeObsBias(ioda::ObsVector &, ObsDiagnostics &, const std::vector< ioda::ObsVector > &) const
Definition: ObsBias.cc:216
ufo::ObsOperator::~ObsOperator
~ObsOperator()
Definition: ObsOperator.cc:36
conf
Definition: conf.py:1
ufo::ObsOperator::ObsOperator
ObsOperator(ioda::ObsSpace &, const eckit::Configuration &)
Definition: ObsOperator.cc:30