OOPS
ObsTableView.h
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 #ifndef LORENZ95_OBSTABLEVIEW_H_
9 #define LORENZ95_OBSTABLEVIEW_H_
10 
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 #include <vector>
15 
16 #include "eckit/geometry/Point2.h"
17 #include "eckit/mpi/Comm.h"
18 
19 #include "oops/base/Variables.h"
20 #include "oops/util/DateTime.h"
21 #include "oops/util/ObjectCounter.h"
22 
23 #include "lorenz95/LocsL95.h"
24 #include "lorenz95/ObsTable.h"
25 
26 namespace lorenz95 {
27 
28 class ObsVec1D;
29 
30 /// A Simple Observation Data Handler
31 /*!
32  * ObsTableView defines a simple observation handler
33  * that mimicks the interfaces required from ODB.
34  */
35 
36 // -----------------------------------------------------------------------------
37 class ObsTableView : public util::Printable,
38  private util::ObjectCounter<ObsTableView> {
39  public:
40  static const std::string classname() {return "lorenz95::ObsTableView";}
41 
42  ObsTableView(const eckit::Configuration &, const eckit::mpi::Comm &,
43  const util::DateTime &, const util::DateTime &, const eckit::mpi::Comm &);
44  ObsTableView(const ObsTableView &, const eckit::geometry::Point2 &,
45  const eckit::Configuration &);
46  ~ObsTableView();
47 
48  bool has(const std::string &) const;
49  void putdb(const std::string &, const std::vector<int> &) const;
50  void putdb(const std::string &, const std::vector<float> &) const;
51  void putdb(const std::string &, const std::vector<double> &) const;
52  void getdb(const std::string &, std::vector<int> &) const;
53  void getdb(const std::string &, std::vector<float> &) const;
54  void getdb(const std::string &, std::vector<double> &) const;
55 
56  void random(std::vector<double> &) const;
57  unsigned int nobs() const;
58  std::vector<double> locations() const;
59  void generateDistribution(const eckit::Configuration &);
60  std::unique_ptr<LocsL95> locations(const util::DateTime & t1, const util::DateTime & t2) const;
61  void printJo(const ObsVec1D &, const ObsVec1D &);
62 
63  size_t index(const size_t ii) const {return localobs_[ii];}
64  const std::string & obsname() const {return obstable_->obsname();}
65 
66  const util::DateTime & windowStart() const {return obstable_->windowStart();}
67  const util::DateTime & windowEnd() const {return obstable_->windowEnd();}
68  const oops::Variables & obsvariables() const { return obstable_->obsvariables(); }
69  const std::vector<double> & obsdist() const {return obsdist_;}
70  private:
71  void print(std::ostream &) const;
72  std::shared_ptr<ObsTable> obstable_;
73  std::vector<size_t> localobs_;
74  std::vector<double> obsdist_;
75 };
76 // -----------------------------------------------------------------------------
77 } // namespace lorenz95
78 
79 #endif // LORENZ95_OBSTABLEVIEW_H_
lorenz95::ObsTableView::windowStart
const util::DateTime & windowStart() const
Definition: ObsTableView.h:66
lorenz95::ObsTableView::obsvariables
const oops::Variables & obsvariables() const
Definition: ObsTableView.h:68
lorenz95::ObsTableView::obsdist_
std::vector< double > obsdist_
Definition: ObsTableView.h:74
lorenz95::ObsTableView::locations
std::vector< double > locations() const
Definition: ObsTableView.cc:165
lorenz95::ObsTableView::obsdist
const std::vector< double > & obsdist() const
Definition: ObsTableView.h:69
lorenz95::ObsTableView::obsname
const std::string & obsname() const
Definition: ObsTableView.h:64
lorenz95::ObsTableView::windowEnd
const util::DateTime & windowEnd() const
Definition: ObsTableView.h:67
lorenz95::ObsTableView::getdb
void getdb(const std::string &, std::vector< int > &) const
Definition: ObsTableView.cc:115
lorenz95::ObsVec1D
Vector in observation space.
Definition: ObsVec1D.h:34
lorenz95::ObsTableView::print
void print(std::ostream &) const
Definition: ObsTableView.cc:218
lorenz95::ObsTableView::ObsTableView
ObsTableView(const eckit::Configuration &, const eckit::mpi::Comm &, const util::DateTime &, const util::DateTime &, const eckit::mpi::Comm &)
Definition: ObsTableView.cc:25
lorenz95::ObsTableView::index
size_t index(const size_t ii) const
Definition: ObsTableView.h:63
lorenz95::ObsTableView::printJo
void printJo(const ObsVec1D &, const ObsVec1D &)
Definition: ObsTableView.cc:212
lorenz95::ObsTableView::random
void random(std::vector< double > &) const
Definition: ObsTableView.cc:151
lorenz95::ObsTableView::classname
static const std::string classname()
Definition: ObsTableView.h:40
lorenz95::ObsTableView::obstable_
std::shared_ptr< ObsTable > obstable_
Definition: ObsTableView.h:72
lorenz95::ObsTableView::nobs
unsigned int nobs() const
Definition: ObsTableView.cc:158
lorenz95::ObsTableView::has
bool has(const std::string &) const
Definition: ObsTableView.cc:63
LocsL95.h
lorenz95::ObsTableView::~ObsTableView
~ObsTableView()
Definition: ObsTableView.cc:57
lorenz95::ObsTableView
A Simple Observation Data Handler.
Definition: ObsTableView.h:38
lorenz95::ObsTableView::localobs_
std::vector< size_t > localobs_
Definition: ObsTableView.h:73
lorenz95::ObsTableView::generateDistribution
void generateDistribution(const eckit::Configuration &)
Definition: ObsTableView.cc:177
oops::Variables
Definition: oops/base/Variables.h:23
lorenz95::ObsTableView::putdb
void putdb(const std::string &, const std::vector< int > &) const
Definition: ObsTableView.cc:70
ObsTable.h
lorenz95
The namespace for the L95 model.
Definition: l95/src/lorenz95/AnalyticInit.cc:17
Variables.h