OOPS
StaticBInit.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2018 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_RUNS_STATICBINIT_H_
9 #define OOPS_RUNS_STATICBINIT_H_
10 
11 #include <memory>
12 #include <string>
13 
14 #include "eckit/config/LocalConfiguration.h"
17 #include "oops/base/Variables.h"
19 #include "oops/interface/State.h"
20 #include "oops/mpi/mpi.h"
21 #include "oops/runs/Application.h"
22 #include "oops/util/Logger.h"
23 
24 namespace oops {
25 
26 template <typename MODEL> class StaticBInit : public Application {
31 
32  public:
33  // -----------------------------------------------------------------------------
34  explicit StaticBInit(const eckit::mpi::Comm & comm = oops::mpi::world()) : Application(comm) {
35  instantiateCovarFactory<MODEL>();
36  }
37  // -----------------------------------------------------------------------------
38  virtual ~StaticBInit() {}
39  // -----------------------------------------------------------------------------
40  int execute(const eckit::Configuration & fullConfig) const {
41  // Setup resolution
42  const eckit::LocalConfiguration resolConfig(fullConfig, "geometry");
43  const Geometry_ resol(resolConfig, this->getComm());
44 
45  // Setup variables
46  const Variables vars(fullConfig, "analysis variables");
47 
48  // Setup background state
49  const eckit::LocalConfiguration bkgconf(fullConfig, "background");
50  State_ xx(resol, bkgconf);
51 
52  // Initialize static B matrix
53  const eckit::LocalConfiguration covarconf(fullConfig, "background error");
54  std::unique_ptr< Covariance_ >
55  Bmat(CovarianceFactory<MODEL>::create(covarconf, resol, vars, xx, xx));
56 
57  // Randomize B matrix
58  Increment_ dx(resol, vars, xx.validTime());
59  Bmat->randomize(dx);
60  Log::test() << dx << std::endl;
61 
62  return 0;
63  }
64  // -----------------------------------------------------------------------------
65  private:
66  std::string appname() const {
67  return "oops::StaticBInit<" + MODEL::name() + ">";
68  }
69  // -----------------------------------------------------------------------------
70 };
71 
72 } // namespace oops
73 
74 #endif // OOPS_RUNS_STATICBINIT_H_
oops::State::validTime
const util::DateTime validTime() const
Time.
Definition: oops/interface/State.h:60
oops
The namespace for the main oops code.
Definition: ErrorCovarianceL95.cc:22
oops::StaticBInit::execute
int execute(const eckit::Configuration &fullConfig) const
Definition: StaticBInit.h:40
ModelSpaceCovarianceBase.h
oops::CovarianceFactory
Covariance Factory.
Definition: ModelSpaceCovarianceBase.h:93
mpi.h
oops::StaticBInit
Definition: StaticBInit.h:26
oops::StaticBInit::Covariance_
ModelSpaceCovarianceBase< MODEL > Covariance_
Definition: StaticBInit.h:27
oops::StaticBInit::State_
State< MODEL > State_
Definition: StaticBInit.h:30
oops::StaticBInit::Geometry_
Geometry< MODEL > Geometry_
Definition: StaticBInit.h:28
Application.h
oops::Application::getComm
const eckit::mpi::Comm & getComm() const
Definition: Application.h:36
oops::StaticBInit::~StaticBInit
virtual ~StaticBInit()
Definition: StaticBInit.h:38
oops::StaticBInit::StaticBInit
StaticBInit(const eckit::mpi::Comm &comm=oops::mpi::world())
Definition: StaticBInit.h:34
oops::Geometry
Geometry class used in oops; subclass of interface class above.
Definition: oops/interface/Geometry.h:189
instantiateCovarFactory.h
oops::State
Encapsulates the model state.
Definition: CostJbState.h:28
oops::Application
Definition: Application.h:29
State.h
oops::mpi::world
const eckit::mpi::Comm & world()
Default communicator with all MPI tasks (ie MPI_COMM_WORLD)
Definition: oops/mpi/mpi.cc:22
oops::Variables
Definition: oops/base/Variables.h:23
oops::ModelSpaceCovarianceBase
Definition: ModelSpaceCovarianceBase.h:61
oops::StaticBInit::appname
std::string appname() const
Definition: StaticBInit.h:66
oops::Increment
Increment Class: Difference between two states.
Definition: CostJbState.h:27
oops::StaticBInit::Increment_
Increment< MODEL > Increment_
Definition: StaticBInit.h:29
Variables.h
Geometry.h