OOPS
ObsLocalization.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2020 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 OOPS_INTERFACE_OBSLOCALIZATION_H_
9 #define OOPS_INTERFACE_OBSLOCALIZATION_H_
10 
11 #include <memory>
12 #include <string>
13 
14 #include "eckit/config/LocalConfiguration.h"
18 #include "oops/util/Logger.h"
19 
20 namespace oops {
21 
22 // -----------------------------------------------------------------------------
23 
24 template <typename OBS, typename LOC>
25 class ObsLocalization : public ObsLocalizationBase<OBS> {
28 
29  public:
30  static const std::string classname() {return "oops::ObsLocalization";}
31 
32  ObsLocalization(const eckit::Configuration &, const ObsSpace_ &);
34 
35  void multiply(ObsVector_ &) const override;
36 
37  private:
38  void print(std::ostream &) const override;
39 
40  std::unique_ptr<LOC> obsloc_;
41 };
42 
43 // -----------------------------------------------------------------------------
44 
45 template <typename OBS, typename LOC>
46 ObsLocalization<OBS, LOC>::ObsLocalization(const eckit::Configuration & conf,
47  const ObsSpace_ & os)
48  : obsloc_()
49 {
50  Log::trace() << "ObsLocalization<OBS, LOC>::ObsLocalization Configuration starting" <<
51  std::endl;
52  util::Timer timer(classname(), "ObsLocalization");
53  obsloc_.reset(new LOC(conf, os.obsspace()));
54  Log::trace() << "ObsLocalization<OBS, LOC>::ObsLocalization Configuration done" << std::endl;
55 }
56 
57 // -----------------------------------------------------------------------------
58 
59 template <typename OBS, typename LOC>
61  Log::trace() << "ObsLocalization<OBS, LOC>::~ObsLocalization starting" << std::endl;
62  util::Timer timer(classname(), "~ObsLocalization");
63  obsloc_.reset();
64  Log::trace() << "ObsLocalization<OBS, LOC>::~ObsLocalization done" << std::endl;
65 }
66 
67 // -----------------------------------------------------------------------------
68 
69 template <typename OBS, typename LOC>
71  Log::trace() << "ObsLocalization<OBS, LOC>:: preProcess starting" << std::endl;
72  util::Timer timer(classname(), "preProcess");
73  obsloc_->multiply(dy.obsvector());
74  Log::trace() << "ObsLocalization<OBS, LOC>:: preProcess done" << std::endl;
75 }
76 
77 // -----------------------------------------------------------------------------
78 
79 template <typename OBS, typename LOC>
80 void ObsLocalization<OBS, LOC>::print(std::ostream & os) const {
81  os << "ObsLocalization " << *obsloc_;
82 }
83 
84 // -----------------------------------------------------------------------------
85 
86 } // namespace oops
87 
88 #endif // OOPS_INTERFACE_OBSLOCALIZATION_H_
oops::ObsVector::obsvector
ObsVector_ & obsvector()
Interfacing.
Definition: oops/interface/ObsVector.h:54
oops::ObsLocalizationBase
Base class for generic localizations.
Definition: ObsLocalizationBase.h:29
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::ObsLocalization::ObsLocalization
ObsLocalization(const eckit::Configuration &, const ObsSpace_ &)
Definition: ObsLocalization.h:46
ObsLocalizationBase.h
oops::ObsSpace
Definition: oops/interface/ObsSpace.h:42
oops::ObsLocalization::multiply
void multiply(ObsVector_ &) const override
Definition: ObsLocalization.h:70
oops::ObsLocalization::print
void print(std::ostream &) const override
Definition: ObsLocalization.h:80
oops::ObsSpace::obsspace
ObsSpace_ & obsspace() const
Interfacing.
Definition: oops/interface/ObsSpace.h:61
oops::ObsLocalization::classname
static const std::string classname()
Definition: ObsLocalization.h:30
oops::ObsVector
Definition: oops/interface/ObsSpace.h:36
oops::ObsLocalization
Definition: ObsLocalization.h:25
oops::ObsLocalization::ObsVector_
ObsVector< OBS > ObsVector_
Definition: ObsLocalization.h:27
oops::ObsLocalization::obsloc_
std::unique_ptr< LOC > obsloc_
Definition: ObsLocalization.h:40
oops::ObsLocalization::ObsSpace_
ObsSpace< OBS > ObsSpace_
Definition: ObsLocalization.h:26
ObsSpace.h
ObsVector.h
oops::ObsLocalization::~ObsLocalization
~ObsLocalization()
Definition: ObsLocalization.h:60