FV3-JEDI
LinearGetValues.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 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 #pragma once
9 
10 #include <fstream>
11 #include <map>
12 #include <memory>
13 #include <ostream>
14 #include <string>
15 #include <vector>
16 
17 #include "eckit/exception/Exceptions.h"
18 
19 #include "oops/util/DateTime.h"
20 #include "oops/util/Logger.h"
21 #include "oops/util/ObjectCounter.h"
22 #include "oops/util/Printable.h"
23 #include "oops/util/Timer.h"
24 
25 #include "ufo/GeoVaLs.h"
26 #include "ufo/Locations.h"
27 
31 #include "fv3jedi/State/State.h"
34 
35 // -------------------------------------------------------------------------------------------------
36 
37 namespace ufo {
38  class GeoVaLs;
39  class Locations;
40 }
41 
42 namespace fv3jedi {
43  class State;
44  class Geometry;
45 
46 // -------------------------------------------------------------------------------------------------
47 
48 class LinearGetValues : public util::Printable, private util::ObjectCounter<LinearGetValues> {
49  public:
50  static const std::string classname() {return "fv3jedi::LinearGetValues";}
51 
52  LinearGetValues(const Geometry &, const ufo::Locations &);
53  virtual ~LinearGetValues();
54 
55  void setTrajectory(const State & state, const util::DateTime & t1, const util::DateTime & t2,
56  ufo::GeoVaLs & geovals);
57  void fillGeoVaLsTL(const Increment & inc, const util::DateTime & t1, const util::DateTime & t2,
58  ufo::GeoVaLs & geovals) const;
59  void fillGeoVaLsAD(Increment & inc, const util::DateTime & t1, const util::DateTime & t2,
60  const ufo::GeoVaLs & geovals) const;
61 
62  private:
63  const LinVarChaModel2GeoVaLs * getLinVarCha(const util::DateTime &) const;
64 
65  typedef std::map< util::DateTime, LinVarChaModel2GeoVaLs * >::iterator lvcIter;
66  typedef std::map< util::DateTime, LinVarChaModel2GeoVaLs * >::const_iterator lvcIterCnst;
67 
68  void print(std::ostream &) const;
70  ufo::Locations locs_;
71  std::shared_ptr<const Geometry> geom_;
72  std::map< util::DateTime, LinVarChaModel2GeoVaLs * > linearmodel2geovals_;
73  std::unique_ptr<VarChaModel2GeoVaLs> model2geovals_;
74 };
75 
76 // -------------------------------------------------------------------------------------------------
77 
78 } // namespace fv3jedi
fv3jedi::LinearGetValues::fillGeoVaLsTL
void fillGeoVaLsTL(const Increment &inc, const util::DateTime &t1, const util::DateTime &t2, ufo::GeoVaLs &geovals) const
Definition: LinearGetValues.cc:101
fv3jedi::LinearGetValues::setTrajectory
void setTrajectory(const State &state, const util::DateTime &t1, const util::DateTime &t2, ufo::GeoVaLs &geovals)
Definition: LinearGetValues.cc:68
fv3jedi::LinearGetValues::LinearGetValues
LinearGetValues(const Geometry &, const ufo::Locations &)
Definition: LinearGetValues.cc:14
fv3jedi::LinearGetValues::print
void print(std::ostream &) const
Definition: LinearGetValues.cc:155
fv3jedi::LinearGetValues::geom_
std::shared_ptr< const Geometry > geom_
Definition: LinearGetValues.h:71
fv3jedi::LinearGetValues
Definition: LinearGetValues.h:48
fv3jedi::LinearGetValues::getLinVarCha
const LinVarChaModel2GeoVaLs * getLinVarCha(const util::DateTime &) const
Definition: LinearGetValues.cc:56
Geometry.h
ufo
Definition: GetValues.h:39
VarChaModel2GeoVaLs.h
fv3jedi::F90lineargetvalues
int F90lineargetvalues
Definition: interface.h:47
fv3jedi::LinearGetValues::classname
static const std::string classname()
Definition: LinearGetValues.h:50
LinearGetValues.interface.h
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::Increment
Definition: Increment.h:52
fv3jedi::State
Definition: State.h:45
fv3jedi::LinearGetValues::lvcIterCnst
std::map< util::DateTime, LinVarChaModel2GeoVaLs * >::const_iterator lvcIterCnst
Definition: LinearGetValues.h:66
fv3jedi::LinearGetValues::keyLinearGetValues_
F90lineargetvalues keyLinearGetValues_
Definition: LinearGetValues.h:69
fv3jedi::LinearGetValues::model2geovals_
std::unique_ptr< VarChaModel2GeoVaLs > model2geovals_
Definition: LinearGetValues.h:73
fv3jedi::LinearGetValues::lvcIter
std::map< util::DateTime, LinVarChaModel2GeoVaLs * >::iterator lvcIter
Definition: LinearGetValues.h:65
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
Increment.h
LinVarChaModel2GeoVaLs.h
fv3jedi::LinearGetValues::~LinearGetValues
virtual ~LinearGetValues()
Definition: LinearGetValues.cc:36
fv3jedi::LinVarChaModel2GeoVaLs
Definition: LinVarChaModel2GeoVaLs.h:34
fv3jedi::LinearGetValues::fillGeoVaLsAD
void fillGeoVaLsAD(Increment &inc, const util::DateTime &t1, const util::DateTime &t2, const ufo::GeoVaLs &geovals) const
Definition: LinearGetValues.cc:127
fv3jedi::LinearGetValues::linearmodel2geovals_
std::map< util::DateTime, LinVarChaModel2GeoVaLs * > linearmodel2geovals_
Definition: LinearGetValues.h:72
State.h
fv3jedi::LinearGetValues::locs_
ufo::Locations locs_
Definition: LinearGetValues.h:70