FV3-JEDI
Geometry.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_GEOMETRY_GEOMETRY_H_
9 #define FV3JEDI_GEOMETRY_GEOMETRY_H_
10 
11 #include <memory>
12 #include <ostream>
13 #include <string>
14 #include <vector>
15 
16 #include "atlas/field.h"
17 #include "atlas/functionspace.h"
18 
19 #include "eckit/mpi/Comm.h"
20 
21 #include "oops/mpi/mpi.h"
22 #include "oops/util/ObjectCounter.h"
23 #include "oops/util/Printable.h"
24 
28 
29 namespace eckit {
30  class Configuration;
31 }
32 
33 namespace fv3jedi {
34 
35  class GeometryIterator;
36 
37 // -------------------------------------------------------------------------------------------------
38 /// Geometry handles geometry for FV3JEDI model.
39 
40 class Geometry : public util::Printable,
41  private util::ObjectCounter<Geometry> {
42  public:
43  static const std::string classname() {return "fv3jedi::Geometry";}
44 
45  explicit Geometry(const eckit::Configuration &, const eckit::mpi::Comm &);
46  Geometry(const Geometry &);
47  ~Geometry();
48 
49  GeometryIterator begin() const;
50  GeometryIterator end() const;
51  std::vector<double> verticalCoord(std::string &) const;
52 
53  F90geom & toFortran() {return keyGeom_;}
54  const F90geom & toFortran() const {return keyGeom_;}
55  const eckit::mpi::Comm & getComm() const {return comm_;}
56  atlas::FunctionSpace * atlasFunctionSpace() const {return atlasFunctionSpace_.get();}
57  atlas::FieldSet * atlasFieldSet() const {return atlasFieldSet_.get();}
58 
59  private:
61  void print(std::ostream &) const;
63  const eckit::mpi::Comm & comm_;
64  std::unique_ptr<atlas::functionspace::PointCloud> atlasFunctionSpace_;
65  std::unique_ptr<atlas::FieldSet> atlasFieldSet_;
67 };
68 // -------------------------------------------------------------------------------------------------
69 
70 } // namespace fv3jedi
71 
72 #endif // FV3JEDI_GEOMETRY_GEOMETRY_H_
fv3jedi::Geometry::print
void print(std::ostream &) const
Definition: Geometry.cc:133
fv3jedi::Geometry::fieldsMeta_
const FieldsMetadata fieldsMeta_
Definition: Geometry.h:66
fv3jedi::Geometry::getComm
const eckit::mpi::Comm & getComm() const
Definition: Geometry.h:55
fv3jedi::Geometry::~Geometry
~Geometry()
Definition: Geometry.cc:85
fv3jedi::Geometry::end
GeometryIterator end() const
Definition: Geometry.cc:100
fv3jedi::Geometry::toFortran
F90geom & toFortran()
Definition: Geometry.h:53
fv3jedi::Geometry::keyGeom_
F90geom keyGeom_
Definition: Geometry.h:62
Geometry.interface.h
GeometryIterator.h
fv3jedi::Geometry::operator=
Geometry & operator=(const Geometry &)
fv3jedi::Geometry::begin
GeometryIterator begin() const
Definition: Geometry.cc:91
fv3jedi::F90geom
int F90geom
Definition: interface.h:24
eckit
Definition: FieldsMetadata.h:25
fv3jedi::Geometry::atlasFunctionSpace
atlas::FunctionSpace * atlasFunctionSpace() const
Definition: Geometry.h:56
FieldsMetadata.h
fv3jedi::Geometry::atlasFieldSet_
std::unique_ptr< atlas::FieldSet > atlasFieldSet_
Definition: Geometry.h:65
fv3jedi::Geometry::comm_
const eckit::mpi::Comm & comm_
Definition: Geometry.h:63
fv3jedi::Geometry
Geometry handles geometry for FV3JEDI model.
Definition: Geometry.h:41
fv3jedi::Geometry::Geometry
Geometry(const eckit::Configuration &, const eckit::mpi::Comm &)
Definition: Geometry.cc:32
fv3jedi::Geometry::atlasFieldSet
atlas::FieldSet * atlasFieldSet() const
Definition: Geometry.h:57
fv3jedi::Geometry::toFortran
const F90geom & toFortran() const
Definition: Geometry.h:54
fv3jedi::Geometry::verticalCoord
std::vector< double > verticalCoord(std::string &) const
Definition: Geometry.cc:109
fv3jedi::GeometryIterator
Definition: GeometryIterator.h:30
fv3jedi
Configuration files should be formatted as e.g.
Definition: ErrorCovariance.cc:20
fv3jedi::FieldsMetadata
Definition: FieldsMetadata.h:159
fv3jedi::Geometry::atlasFunctionSpace_
std::unique_ptr< atlas::functionspace::PointCloud > atlasFunctionSpace_
Definition: Geometry.h:64
fv3jedi::Geometry::classname
static const std::string classname()
Definition: Geometry.h:43