FV3-JEDI
ModelNUOPC.cc
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 #include <vector>
9 
10 #include "eckit/config/Configuration.h"
11 
12 #include "oops/util/DateTime.h"
13 #include "oops/util/Logger.h"
14 
15 #include "ModelNUOPC.interface.h"
16 
20 #include "fv3jedi/State/State.h"
22 
23 namespace fv3jedi {
24 // -----------------------------------------------------------------------------
25 static oops::ModelMaker<Traits, ModelNUOPC> makermodel_("NUOPC");
26 // -----------------------------------------------------------------------------
28  const eckit::Configuration & model)
29  : keyConfig_(0), tstep_(0), geom_(resol),
30  vars_(std::vector<std::string>{"ud", "vd", "ua", "va", "t", "delp",
31  "q", "qi", "ql", "o3mr"})
32 {
33  oops::Log::trace() << "ModelNUOPC::ModelNUOPC" << std::endl;
34  tstep_ = util::Duration(model.getString("tstep"));
35  const eckit::Configuration * configc = &model;
36  fv3jedi_nuopc_create_f90(&configc, geom_.toFortran(), keyConfig_);
37  oops::Log::trace() << "ModelNUOPC created" << std::endl;
38 }
39 // -----------------------------------------------------------------------------
42  oops::Log::trace() << "ModelNUOPC destructed" << std::endl;
43 }
44 // -----------------------------------------------------------------------------
45 void ModelNUOPC::initialize(State & xx) const {
46  util::DateTime * dtp = &xx.validTime();
48  oops::Log::debug() << "ModelNUOPC::initialize" << std::endl;
49 }
50 // -----------------------------------------------------------------------------
51 void ModelNUOPC::step(State & xx, const ModelBias &) const
52 {
53  util::DateTime start = xx.validTime();
54  util::DateTime * dtp1 = &start;
55  xx.validTime() += tstep_;
56  util::DateTime * dtp2 = &xx.validTime();
57  fv3jedi_nuopc_step_f90(keyConfig_, xx.toFortran(), &dtp1, &dtp2);
58  oops::Log::debug() << "ModelNUOPC::step" << std::endl;
59 }
60 // -----------------------------------------------------------------------------
61 void ModelNUOPC::finalize(State & xx) const {
62  util::DateTime * dtp = &xx.validTime();
64  oops::Log::debug() << "ModelNUOPC::finalize" << std::endl;
65 }
66 // -----------------------------------------------------------------------------
67 void ModelNUOPC::print(std::ostream & os) const {
68  os << "ModelNUOPC::print not implemented";
69 }
70 // -----------------------------------------------------------------------------
71 } // namespace fv3jedi
fv3jedi::fv3jedi_nuopc_delete_f90
void fv3jedi_nuopc_delete_f90(F90model &)
ModelNUOPC.interface.h
fv3jedi::fv3jedi_nuopc_create_f90
void fv3jedi_nuopc_create_f90(const eckit::Configuration *const *, const F90geom &, F90model &)
fv3jedi::ModelNUOPC::tstep_
util::Duration tstep_
Definition: ModelNUOPC.h:64
Utilities.h
fv3jedi::ModelNUOPC::initialize
void initialize(State &) const
Prepare model integration.
Definition: ModelNUOPC.cc:45
model
Definition: model.py:1
fv3jedi::fv3jedi_nuopc_step_f90
void fv3jedi_nuopc_step_f90(const F90model &, const F90state &, util::DateTime *const *, util::DateTime *const *)
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::fv3jedi_nuopc_finalize_f90
void fv3jedi_nuopc_finalize_f90(const F90model &, const F90inc &, util::DateTime *const *)
fv3jedi::ModelNUOPC::keyConfig_
F90model keyConfig_
Definition: ModelNUOPC.h:63
fv3jedi::ModelBias
Model error for the FV3JEDI model.
Definition: ModelBias.h:41
fv3jedi::State::toFortran
int & toFortran()
Definition: State.h:87
fv3jedi::State::validTime
const util::DateTime & validTime() const
Definition: State.h:83
fv3jedi::fv3jedi_nuopc_initialize_f90
void fv3jedi_nuopc_initialize_f90(const F90model &, const F90state &, util::DateTime *const *)
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
ModelBias.h
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
ModelNUOPC.h
fv3jedi::ModelNUOPC::finalize
void finalize(State &) const
Finish model integration.
Definition: ModelNUOPC.cc:61
fv3jedi::ModelNUOPC::print
void print(std::ostream &) const
Definition: ModelNUOPC.cc:67
State.h
fv3jedi::makermodel_
static oops::ModelMaker< Traits, ModelFV3LM > makermodel_("FV3LM")