16 #include "atlas/library/config.h" 17 #include "atlas/util/ObjectHandle.h" 23 class Parametrisation;
36 #ifndef DOXYGEN_SHOULD_SKIP_THIS 40 class ZonalBandDomain;
41 class RectangularDomain;
42 class RectangularLonLatDomain;
48 class Domain : DOXYGEN_HIDE( public util::ObjectHandle<atlas::domain::Domain> ) {
55 Domain(
const eckit::Parametrisation& );
58 std::string type()
const;
61 bool contains(
double x,
double y )
const;
64 bool contains(
const PointXY& p )
const;
76 void hash( eckit::Hash& )
const;
80 bool containsNorthPole()
const;
84 bool containsSouthPole()
const;
87 std::string units()
const;
91 void print( std::ostream& )
const;
93 friend std::ostream& operator<<( std::ostream& s,
const Domain& d );
100 using Interval = std::array<double, 2>;
103 using Domain::Domain;
105 RectangularDomain(
const Interval& x,
const Interval& y,
const std::string& units =
"degrees" );
109 operator bool()
const {
return domain_; }
112 bool contains_x(
double x )
const;
115 bool contains_y(
double y )
const;
117 bool zonal_band()
const;
125 const ::atlas::domain::RectangularDomain* domain_;
132 using RectangularDomain::RectangularDomain;
137 operator bool()
const {
return RectangularDomain::operator bool() && units() ==
"degrees"; }
139 double west()
const {
return xmin(); }
140 double east()
const {
return xmax(); }
141 double north()
const {
return ymax(); }
142 double south()
const {
return ymin(); }
149 using Interval = std::array<double, 2>;
152 using RectangularLonLatDomain::RectangularLonLatDomain;
157 operator bool()
const {
return domain_; }
160 const ::atlas::domain::ZonalBandDomain* domain_;
171 operator bool()
const {
return domain_; }
174 const ::atlas::domain::GlobalDomain* domain_;
Point in arbitrary XY-coordinate system.
Definition: Point.h:40
Contains all atlas classes and methods.
Definition: atlas-grids.cc:33
Configuration class used to construct various atlas components.
Definition: Config.h:27