OOPS
IdentityModel.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2020-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_GENERIC_IDENTITYMODEL_H_
9 #define OOPS_GENERIC_IDENTITYMODEL_H_
10 
11 #include <string>
12 
13 #include "oops/base/ModelBase.h"
15 #include "oops/base/Variables.h"
18 #include "oops/interface/State.h"
19 #include "oops/util/Duration.h"
20 #include "oops/util/Logger.h"
21 #include "oops/util/parameters/Parameters.h"
22 #include "oops/util/parameters/RequiredParameter.h"
23 
24 namespace oops {
25 
27  OOPS_CONCRETE_PARAMETERS(IdentityModelParameters, ModelParametersBase)
28 
29  public:
30  oops::RequiredParameter<util::Duration> tstep{"tstep", this};
31  oops::RequiredParameter<Variables> vars{"state variables", this};
32 };
33 
34 /// Generic implementation of identity model
35 template <typename MODEL>
36 class IdentityModel : public ModelBase<MODEL> {
37  typedef typename MODEL::Geometry Geometry_;
38  typedef typename MODEL::ModelAuxControl ModelAux_;
39  typedef typename MODEL::State State_;
40 
41  public:
43 
44  static const std::string classname() {return "oops::IdentityModel";}
45 
47 
48 /// initialize forecast
49  void initialize(State_ &) const override;
50 /// one forecast step
51  void step(State_ &, const ModelAux_ &) const override;
52 /// finalize forecast
53  void finalize(State_ &) const override;
54 
55 /// model time step
56  const util::Duration & timeResolution() const override {return params_.tstep;}
57 /// model variables
58  const oops::Variables & variables() const override {return params_.vars;}
59 
60  private:
61  void print(std::ostream &) const override {}
63 };
64 
65 // -----------------------------------------------------------------------------
66 
67 template<typename MODEL>
69  : params_(params) {
70  Log::trace() << "IdentityModel<MODEL>::IdentityModel done" << std::endl;
71 }
72 
73 // -----------------------------------------------------------------------------
74 
75 template<typename MODEL>
77  Log::trace() << "IdentityModel<MODEL>::initialize done" << std::endl;
78 }
79 
80 // -----------------------------------------------------------------------------
81 
82 template<typename MODEL>
83 void IdentityModel<MODEL>::step(State_ & xx, const ModelAux_ & merr) const {
84  Log::trace() << "IdentityModel<MODEL>:step Starting " << std::endl;
85  xx.updateTime(params_.tstep);
86  Log::trace() << "IdentityModel<MODEL>::step done" << std::endl;
87 }
88 
89 // -----------------------------------------------------------------------------
90 
91 template<typename MODEL>
93  Log::trace() << "IdentityModel<MODEL>::finalize done" << std::endl;
94 }
95 
96 // -----------------------------------------------------------------------------
97 
98 } // namespace oops
99 
100 #endif // OOPS_GENERIC_IDENTITYMODEL_H_
oops::IdentityModel::IdentityModel
IdentityModel(const Geometry_ &, const IdentityModelParameters &)
Definition: IdentityModel.h:68
oops::ModelBase
Base class for the forecasting model Defines the interfaces for a forecast model.
Definition: ModelBase.h:45
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::IdentityModel::Parameters_
IdentityModelParameters Parameters_
Definition: IdentityModel.h:42
oops::IdentityModelParameters::vars
oops::RequiredParameter< Variables > vars
Definition: IdentityModel.h:31
oops::IdentityModel::timeResolution
const util::Duration & timeResolution() const override
model time step
Definition: IdentityModel.h:56
oops::IdentityModel::step
void step(State_ &, const ModelAux_ &) const override
one forecast step
Definition: IdentityModel.h:83
oops::IdentityModel::print
void print(std::ostream &) const override
Print; used for logging.
Definition: IdentityModel.h:61
oops::IdentityModel::finalize
void finalize(State_ &) const override
finalize forecast
Definition: IdentityModel.h:92
ModelBase.h
oops::IdentityModel::Geometry_
MODEL::Geometry Geometry_
Definition: IdentityModel.h:37
oops::ModelBase::State_
MODEL::State State_
Definition: ModelBase.h:47
oops::ModelBase::ModelAux_
MODEL::ModelAuxControl ModelAux_
Definition: ModelBase.h:46
oops::IdentityModel::classname
static const std::string classname()
Definition: IdentityModel.h:44
oops::IdentityModel::params_
const IdentityModelParameters params_
Definition: IdentityModel.h:62
oops::IdentityModel::ModelAux_
MODEL::ModelAuxControl ModelAux_
Definition: IdentityModel.h:38
oops::IdentityModel::initialize
void initialize(State_ &) const override
initialize forecast
Definition: IdentityModel.h:76
oops::ModelParametersBase
Base class for classes storing model-specific parameters.
Definition: ModelBase.h:81
oops::IdentityModel
Generic implementation of identity model.
Definition: IdentityModel.h:36
State.h
oops::IdentityModelParameters
Definition: IdentityModel.h:26
oops::Variables
Definition: oops/base/Variables.h:23
ParameterTraitsVariables.h
oops::IdentityModel::variables
const oops::Variables & variables() const override
model variables
Definition: IdentityModel.h:58
Variables.h
ModelAuxControl.h
oops::IdentityModel::State_
MODEL::State State_
Definition: IdentityModel.h:39
Geometry.h
oops::IdentityModelParameters::tstep
oops::RequiredParameter< util::Duration > tstep
Definition: IdentityModel.h:30