FV3-JEDI
ModelPseudo.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2019-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 #include <vector>
9 
10 #include "eckit/config/Configuration.h"
11 #include "eckit/exception/Exceptions.h"
12 
13 #include "oops/mpi/mpi.h"
14 #include "oops/util/abor1_cpp.h"
15 #include "oops/util/DateTime.h"
16 #include "oops/util/Logger.h"
17 
21 #include "fv3jedi/State/State.h"
22 
23 namespace fv3jedi {
24 // -------------------------------------------------------------------------------------------------
25 static oops::ModelMaker<Traits, ModelPseudo> makermodel_("PSEUDO");
26 // -------------------------------------------------------------------------------------------------
27 ModelPseudo::ModelPseudo(const Geometry & resol, const eckit::Configuration & mconf)
28  : keyConfig_(0), tstep_(0), geom_(resol), vars_(mconf, "model variables")
29 {
30  oops::Log::trace() << "ModelPseudo::ModelPseudo" << std::endl;
31  tstep_ = util::Duration(mconf.getString("tstep"));
32  const eckit::Configuration * configc = &mconf;
34  if (mconf.has("run stage check")) {
35  runstagecheck_ = mconf.getInt("run stage check");
36  }
37  oops::Log::trace() << "ModelPseudo created" << std::endl;
38 }
39 // -------------------------------------------------------------------------------------------------
42  oops::Log::trace() << "ModelPseudo destructed" << std::endl;
43 }
44 // -------------------------------------------------------------------------------------------------
45 void ModelPseudo::initialize(State & xx) const {
46  if (runstage_) {
48  }
49  oops::Log::trace() << "ModelPseudo::initialize" << std::endl;
50 }
51 // -------------------------------------------------------------------------------------------------
52 void ModelPseudo::step(State & xx, const ModelBias &) const {
53  xx.validTime() += tstep_;
54  util::DateTime * dtp = &xx.validTime();
55  if (runstage_) {
57  } else {
58  int world_rank = oops::mpi::world().rank();
59  if (world_rank == 0) {
60  oops::Log::warning() << "Pseudo model has already run through "
61  "once so not re-reading states, just ticking the"
62  " clock." << std::endl;
63  }
64  }
65  oops::Log::trace() << "ModelPseudo::step" << xx.validTime() << std::endl;
66 }
67 // -------------------------------------------------------------------------------------------------
68 void ModelPseudo::finalize(State & xx) const {
69  if (runstage_) {
71  }
72  if (runstagecheck_ == 1) {runstage_ = false;}
73  oops::Log::trace() << "ModelPseudo::finalize" << std::endl;
74 }
75 // -------------------------------------------------------------------------------------------------
76 void ModelPseudo::print(std::ostream & os) const {
77  os << "ModelPseudo::print not implemented";
78 }
79 // -------------------------------------------------------------------------------------------------
80 } // namespace fv3jedi
fv3jedi::ModelPseudo::runstagecheck_
int runstagecheck_
Definition: ModelPseudo.h:67
fv3jedi::ModelPseudo::initialize
void initialize(State &) const
Prepare model integration.
Definition: ModelPseudo.cc:45
fv3jedi::ModelPseudo::~ModelPseudo
~ModelPseudo()
Definition: ModelPseudo.cc:40
fv3jedi::ModelPseudo::finalize
void finalize(State &) const
Finish model integration.
Definition: ModelPseudo.cc:68
fv3jedi::Geometry::toFortran
F90geom & toFortran()
Definition: Geometry.h:53
fv3jedi::ModelPseudo::runstage_
bool runstage_
Definition: ModelPseudo.h:68
fv3jedi::ModelPseudo::tstep_
util::Duration tstep_
Definition: ModelPseudo.h:64
Geometry.h
ModelPseudo.h
fv3jedi::fv3jedi_pseudo_finalize_f90
void fv3jedi_pseudo_finalize_f90(const F90model &, const F90inc &)
fv3jedi::ModelPseudo::step
void step(State &, const ModelBias &) const
Model integration.
Definition: ModelPseudo.cc:52
fv3jedi::ModelBias
Model error for the FV3JEDI model.
Definition: ModelBias.h:41
fv3jedi::fv3jedi_pseudo_initialize_f90
void fv3jedi_pseudo_initialize_f90(const F90model &, const F90state &)
fv3jedi::State::toFortran
int & toFortran()
Definition: State.h:87
fv3jedi::State::validTime
const util::DateTime & validTime() const
Definition: State.h:83
fv3jedi::ModelPseudo::keyConfig_
F90model keyConfig_
Definition: ModelPseudo.h:63
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
ModelBias.h
fv3jedi::ModelPseudo::print
void print(std::ostream &) const
Definition: ModelPseudo.cc:76
fv3jedi::ModelPseudo::ModelPseudo
ModelPseudo(const Geometry &, const eckit::Configuration &)
Definition: ModelPseudo.cc:27
fv3jedi::State
Definition: State.h:45
fv3jedi::fv3jedi_pseudo_step_f90
void fv3jedi_pseudo_step_f90(const F90model &, const F90state &, const F90geom &, util::DateTime *const *)
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::fv3jedi_pseudo_delete_f90
void fv3jedi_pseudo_delete_f90(F90model &)
fv3jedi::ModelPseudo::geom_
const Geometry geom_
Definition: ModelPseudo.h:65
State.h
fv3jedi::fv3jedi_pseudo_create_f90
void fv3jedi_pseudo_create_f90(const eckit::Configuration *const *, const F90geom &, F90model &)
fv3jedi::makermodel_
static oops::ModelMaker< Traits, ModelFV3LM > makermodel_("FV3LM")