FV3-JEDI
ModelFV3LM.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 FV3JEDI_MODEL_FV3LM_MODELFV3LM_H_
9 #define FV3JEDI_MODEL_FV3LM_MODELFV3LM_H_
10 
11 #include <ostream>
12 #include <string>
13 
14 #include "oops/base/ModelBase.h"
15 #include "oops/base/Variables.h"
16 #include "oops/util/Duration.h"
17 #include "oops/util/ObjectCounter.h"
18 #include "oops/util/Printable.h"
19 
23 
24 // Forward declarations
25 namespace eckit {
26  class Configuration;
27 }
28 
29 namespace fv3jedi {
30  class ModelBias;
31  class Increment;
32  class State;
33 
34 // -------------------------------------------------------------------------------------------------
35 
36 class ModelFV3LM: public oops::ModelBase<Traits>, private util::ObjectCounter<ModelFV3LM> {
37  public:
38  static const std::string classname() {return "fv3jedi::ModelFV3LM";}
39 
40  ModelFV3LM(const Geometry &, const eckit::Configuration &);
41  ~ModelFV3LM();
42 
43 /// Prepare model integration
44  void initialize(State &) const;
45 
46 /// Model integration
47  void step(State &, const ModelBias &) const;
48 
49 /// Finish model integration
50  void finalize(State &) const;
51 
52 /// Utilities
53  const util::Duration & timeResolution() const {return tstep_;}
54  const oops::Variables & variables() const {return vars_;}
55 
56  private:
57  void print(std::ostream &) const;
59  util::Duration tstep_;
60  const Geometry geom_;
61  const oops::Variables vars_;
62 };
63 // -------------------------------------------------------------------------------------------------
64 
65 } // namespace fv3jedi
66 #endif // FV3JEDI_MODEL_FV3LM_MODELFV3LM_H_
Traits.h
fv3jedi::ModelFV3LM::ModelFV3LM
ModelFV3LM(const Geometry &, const eckit::Configuration &)
Definition: ModelFV3LM.cc:26
fv3jedi::ModelFV3LM::keyConfig_
F90model keyConfig_
Definition: ModelFV3LM.h:58
fv3jedi::ModelFV3LM::initialize
void initialize(State &) const
Prepare model integration.
Definition: ModelFV3LM.cc:43
fv3jedi::F90model
int F90model
Definition: interface.h:28
fv3jedi::ModelFV3LM::geom_
const Geometry geom_
Definition: ModelFV3LM.h:60
fv3jedi::ModelFV3LM::finalize
void finalize(State &) const
Finish model integration.
Definition: ModelFV3LM.cc:55
Geometry.h
fv3jedi::ModelFV3LM::tstep_
util::Duration tstep_
Definition: ModelFV3LM.h:59
fv3jedi::ModelFV3LM::~ModelFV3LM
~ModelFV3LM()
Definition: ModelFV3LM.cc:38
fv3jedi::ModelFV3LM
Definition: ModelFV3LM.h:36
fv3jedi::ModelBias
Model error for the FV3JEDI model.
Definition: ModelBias.h:41
eckit
Definition: FieldsMetadata.h:25
ModelFV3LM.interface.h
fv3jedi::ModelFV3LM::timeResolution
const util::Duration & timeResolution() const
Utilities.
Definition: ModelFV3LM.h:53
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::ModelFV3LM::step
void step(State &, const ModelBias &) const
Model integration.
Definition: ModelFV3LM.cc:48
fv3jedi::State
Definition: State.h:45
fv3jedi::ModelFV3LM::classname
static const std::string classname()
Definition: ModelFV3LM.h:38
fv3jedi::ModelFV3LM::print
void print(std::ostream &) const
Definition: ModelFV3LM.cc:60
fv3jedi::ModelFV3LM::vars_
const oops::Variables vars_
Definition: ModelFV3LM.h:61
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::ModelFV3LM::variables
const oops::Variables & variables() const
Definition: ModelFV3LM.h:54