FV3-JEDI
ModelNUOPC.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017 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_NUOPC_MODELNUOPC_H_
9 #define FV3JEDI_MODEL_NUOPC_MODELNUOPC_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 
22 #include "ModelNUOPC.interface.h"
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 /// FV3JEDI model definition.
36 /*!
37  * FV3JEDI nonlinear model definition and configuration parameters.
38  */
39 
40 class ModelNUOPC: public oops::ModelBase<Traits>,
41  private util::ObjectCounter<ModelNUOPC> {
42  public:
43  static const std::string classname() {return "fv3jedi::ModelNUOPC";}
44 
45  ModelNUOPC(const Geometry &, const eckit::Configuration &);
46  ~ModelNUOPC();
47 
48 /// Prepare model integration
49  void initialize(State &) const;
50 
51 /// Model integration
52  void step(State &, const ModelBias &) const;
53 
54 /// Finish model integration
55  void finalize(State &) const;
56 
57 /// Utilities
58  const util::Duration & timeResolution() const {return tstep_;}
59  const oops::Variables & variables() const {return vars_;}
60 
61  private:
62  void print(std::ostream &) const;
64  util::Duration tstep_;
65  const Geometry geom_;
66  const oops::Variables vars_;
67 };
68 // -----------------------------------------------------------------------------
69 
70 } // namespace fv3jedi
71 #endif // FV3JEDI_MODEL_NUOPC_MODELNUOPC_H_
fv3jedi::ModelNUOPC::geom_
const Geometry geom_
Definition: ModelNUOPC.h:65
Traits.h
ModelNUOPC.interface.h
fv3jedi::ModelNUOPC::tstep_
util::Duration tstep_
Definition: ModelNUOPC.h:64
fv3jedi::ModelNUOPC
FV3JEDI model definition.
Definition: ModelNUOPC.h:41
fv3jedi::ModelNUOPC::initialize
void initialize(State &) const
Prepare model integration.
Definition: ModelNUOPC.cc:45
fv3jedi::ModelNUOPC::classname
static const std::string classname()
Definition: ModelNUOPC.h:43
fv3jedi::ModelNUOPC::timeResolution
const util::Duration & timeResolution() const
Utilities.
Definition: ModelNUOPC.h:58
fv3jedi::ModelNUOPC::vars_
const oops::Variables vars_
Definition: ModelNUOPC.h:66
fv3jedi::F90model
int F90model
Definition: interface.h:28
Geometry.h
fv3jedi::ModelNUOPC::~ModelNUOPC
~ModelNUOPC()
Definition: ModelNUOPC.cc:40
fv3jedi::ModelNUOPC::step
void step(State &, const ModelBias &) const
Model integration.
Definition: ModelNUOPC.cc:51
fv3jedi::ModelNUOPC::keyConfig_
F90model keyConfig_
Definition: ModelNUOPC.h:63
fv3jedi::ModelBias
Model error for the FV3JEDI model.
Definition: ModelBias.h:41
eckit
Definition: FieldsMetadata.h:25
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::ModelNUOPC::ModelNUOPC
ModelNUOPC(const Geometry &, const eckit::Configuration &)
Definition: ModelNUOPC.cc:27
fv3jedi::State
Definition: State.h:45
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::ModelNUOPC::finalize
void finalize(State &) const
Finish model integration.
Definition: ModelNUOPC.cc:61
fv3jedi::ModelNUOPC::variables
const oops::Variables & variables() const
Definition: ModelNUOPC.h:59
fv3jedi::ModelNUOPC::print
void print(std::ostream &) const
Definition: ModelNUOPC.cc:67