OOPS
GeoVaLsWriter.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2019 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_BASE_GEOVALSWRITER_H_
9 #define OOPS_BASE_GEOVALSWRITER_H_
10 
11 #include <memory>
12 
13 #include "eckit/config/LocalConfiguration.h"
15 #include "oops/base/Variables.h"
16 #include "oops/interface/GeoVaLs.h"
21 #include "oops/util/dot_product.h"
22 #include "oops/util/Logger.h"
23 
24 namespace oops {
25 
26 // -----------------------------------------------------------------------------
27 
28 template <typename OBS>
29 class GeoVaLsWriter : public ObsFilterBase<OBS> {
34  template <typename DATA> using ObsDataPtr_ = std::shared_ptr<ObsDataVector<OBS, DATA> >;
35 
36  public:
37  GeoVaLsWriter(const ObsSpace_ &, const eckit::Configuration & conf,
40 
41  void preProcess() const override {}
42 
43  void priorFilter(const GeoVaLs_ & gv) const override {
44  const double zz = sqrt(dot_product(gv, gv));
45  Log::info() << "GeoVaLsWriter norm = " << zz << std::endl;
46  gv.write(conf_);
47  }
48 
49  void postFilter(const ObsVector_ &, const ObsDiags_ &) const override {}
50 
51  Variables requiredVars() const override {return novars_;};
52  Variables requiredHdiagnostics() const override {return novars_;};
53 
54  private:
55  const eckit::LocalConfiguration conf_;
56  const Variables novars_; // could be used to determine what needs saving
57 
58  void print(std::ostream &) const override;
59 };
60 
61 // -----------------------------------------------------------------------------
62 
63 template <typename OBS>
64 void GeoVaLsWriter<OBS>::print(std::ostream & os) const {
65  os << "GeoVaLsWriter: " << conf_;
66 }
67 
68 // -----------------------------------------------------------------------------
69 
70 } // namespace oops
71 
72 #endif // OOPS_BASE_GEOVALSWRITER_H_
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::GeoVaLsWriter::postFilter
void postFilter(const ObsVector_ &, const ObsDiags_ &) const override
Definition: GeoVaLsWriter.h:49
oops::GeoVaLsWriter::priorFilter
void priorFilter(const GeoVaLs_ &gv) const override
Definition: GeoVaLsWriter.h:43
oops::GeoVaLs::write
void write(const eckit::Configuration &) const
Definition: oops/interface/GeoVaLs.h:232
oops::ObsSpace
Definition: oops/interface/ObsSpace.h:42
oops::GeoVaLsWriter::novars_
const Variables novars_
Definition: GeoVaLsWriter.h:56
oops::GeoVaLsWriter::ObsDiags_
ObsDiagnostics< OBS > ObsDiags_
Definition: GeoVaLsWriter.h:31
oops::ObsVector
Definition: oops/interface/ObsSpace.h:36
oops::GeoVaLsWriter::preProcess
void preProcess() const override
Definition: GeoVaLsWriter.h:41
ObsDiagnostics.h
oops::GeoVaLsWriter
Definition: GeoVaLsWriter.h:29
oops::GeoVaLsWriter::ObsVector_
ObsVector< OBS > ObsVector_
Definition: GeoVaLsWriter.h:33
oops::GeoVaLsWriter::conf_
const eckit::LocalConfiguration conf_
Definition: GeoVaLsWriter.h:52
ObsFilterBase.h
oops::GeoVaLsWriter::print
void print(std::ostream &) const override
Definition: GeoVaLsWriter.h:64
oops::GeoVaLsWriter::GeoVaLs_
GeoVaLs< OBS > GeoVaLs_
Definition: GeoVaLsWriter.h:30
oops::GeoVaLsWriter::~GeoVaLsWriter
~GeoVaLsWriter()
Definition: GeoVaLsWriter.h:39
oops::GeoVaLsWriter::ObsDataPtr_
std::shared_ptr< ObsDataVector< OBS, DATA > > ObsDataPtr_
Definition: GeoVaLsWriter.h:34
ObsSpace.h
oops::ObsDiagnostics
Definition: ObsDiagnostics.h:33
oops::GeoVaLsWriter::GeoVaLsWriter
GeoVaLsWriter(const ObsSpace_ &, const eckit::Configuration &conf, ObsDataPtr_< int >, ObsDataPtr_< float >)
Definition: GeoVaLsWriter.h:37
oops::ObsFilterBase
Base class for QC filters applied to observations.
Definition: ObsFilterBase.h:33
oops::Variables
Definition: oops/base/Variables.h:23
ObsVector.h
GeoVaLs.h
oops::GeoVaLsWriter::requiredVars
Variables requiredVars() const override
Definition: GeoVaLsWriter.h:51
ObsDataVector.h
oops::GeoVaLs
Definition: oops/interface/GeoVaLs.h:32
oops::GeoVaLsWriter::requiredHdiagnostics
Variables requiredHdiagnostics() const override
Definition: GeoVaLsWriter.h:52
oops::GeoVaLsWriter::ObsSpace_
ObsSpace< OBS > ObsSpace_
Definition: GeoVaLsWriter.h:32
Variables.h