ESyS-Particle  2.3.4
GeometryInfo.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMGEOMETRYINFO_H
15 #define ESYS_LSMGEOMETRYINFO_H
16 
17 #include "Foundation/vec3.h"
18 
19 #include <vector>
20 #include <iostream>
21 
22 namespace esys
23 {
24  namespace lsm
25  {
26  typedef std::vector<bool> BoolVector;
27  typedef std::vector<Vec3> Vec3Vector;
28  typedef std::vector<int> IntVector;
29 
34  {
35  public:
39  GeometryInfo();
40 
45  float version,
46  const Vec3 &bBoxMin,
47  const Vec3 &bBoxMax,
48  const BoolVector &periodicDimensions,
49  bool is2d = false
50  );
51 
52  GeometryInfo(const GeometryInfo &geoInfo);
53 
54  GeometryInfo &operator=(const GeometryInfo &geoInfo);
55 
56  ~GeometryInfo();
57 
58  bool operator==(const GeometryInfo &geoInfo) const;
59 
63  void setBBox(const Vec3 &min, const Vec3 &max);
64 
69  bool hasAnyPeriodicDimensions() const;
70 
74  bool is2d() const;
75 
80  void set_is2d(bool do2d);
81 
85  Vec3Vector getBBoxCorners() const;
86  Vec3 getMinBBoxCorner() const;
87  Vec3 getMaxBBoxCorner() const;
88 
93 
97  void setPeriodicDimensions(BoolVector periodicDimensions);
98 
102  void setLsmGeoVersion(float version);
103  float getLsmGeoVersion() const;
107  void read(std::istream &iStream);
108 
113  void write(std::ostream &oStream) const;
114  void writeWithoutVersion(std::ostream &oStream) const;
115 
116  bool isCompatible(const GeometryInfo&) const;
117  bool isIdenticalGeometry(const GeometryInfo&) const;
118 
119  private:
120  class Impl;
121 
123  };
124 
125  std::ostream &operator<<(std::ostream &oStream, const GeometryInfo &geoInfo);
126  std::istream &operator<<(std::istream &iStream, GeometryInfo &geoInfo);
127  }
128 }
129 
130 #endif
esys::lsm::IntVector
std::vector< int > IntVector
Definition: LatticeMaster.h:116
esys::lsm::GeometryInfo::isCompatible
bool isCompatible(const GeometryInfo &) const
Definition: GeometryInfo.cpp:360
esys::lsm::GeometryInfo::hasAnyPeriodicDimensions
bool hasAnyPeriodicDimensions() const
Definition: GeometryInfo.cpp:265
esys::lsm::GeometryInfo::Impl::read
void read(std::istream &iStream)
Definition: GeometryInfo.cpp:157
esys::lsm::GeometryInfo::getPeriodicDimensions
IntVector getPeriodicDimensions() const
Definition: GeometryInfo.cpp:306
esys::lsm::GeometryInfo::setPeriodicDimensions
void setPeriodicDimensions(BoolVector periodicDimensions)
Definition: GeometryInfo.cpp:315
esys::lsm::GeometryInfo::Impl::m_periodicDimensions
BoolVector m_periodicDimensions
Definition: GeometryInfo.cpp:57
esys::lsm::GeometryInfo::setBBox
void setBBox(const Vec3 &min, const Vec3 &max)
Definition: GeometryInfo.cpp:348
esys::lsm::GeometryInfo::Impl::write
void write(std::ostream &oStream) const
Definition: GeometryInfo.cpp:121
esys::lsm::GeometryInfo::Impl::m_version
float m_version
Definition: GeometryInfo.cpp:49
esys::lsm::GeometryInfo::Impl::writeWithoutVersion
void writeWithoutVersion(std::ostream &oStream) const
Definition: GeometryInfo.cpp:134
esys::lsm::GeometryInfo::operator=
GeometryInfo & operator=(const GeometryInfo &geoInfo)
Definition: GeometryInfo.cpp:249
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
esys
Definition: CheckPointable.cpp:17
esys::lsm::GeometryInfo::is2d
bool is2d() const
Definition: GeometryInfo.cpp:277
esys::lsm::GeometryInfo::set_is2d
void set_is2d(bool do2d)
Definition: GeometryInfo.cpp:282
esys::lsm::operator<<
std::ostream & operator<<(std::ostream &oStream, const SimpleConnectionData &connectionData)
Definition: GeometryReader.cpp:134
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
esys::lsm::GeometryInfo::setLsmGeoVersion
void setLsmGeoVersion(float version)
Definition: GeometryInfo.cpp:320
esys::lsm::GeometryInfo::Impl::Impl
Impl()
Definition: GeometryInfo.cpp:61
esys::lsm::GeometryInfo::getMinBBoxCorner
Vec3 getMinBBoxCorner() const
Definition: GeometryInfo.cpp:296
esys::lsm::Vec3Vector
std::vector< Vec3 > Vec3Vector
Definition: GeometryInfo.h:27
esys::lsm::GeometryInfo::Impl::operator==
bool operator==(const Impl &impl) const
Definition: GeometryInfo.cpp:100
esys::lsm::GeometryInfo::Impl::operator=
Impl & operator=(const Impl &impl)
Definition: GeometryInfo.cpp:89
esys::lsm::GeometryInfo::getLsmGeoVersion
float getLsmGeoVersion() const
Definition: GeometryInfo.cpp:328
esys::lsm::GeometryInfo::~GeometryInfo
~GeometryInfo()
Definition: GeometryInfo.cpp:255
esys::lsm::GeometryInfo
Definition: GeometryInfo.h:34
esys::lsm::GeometryInfo::Impl::m_bBoxMin
Vec3 m_bBoxMin
Definition: GeometryInfo.cpp:50
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
esys::lsm::GeometryInfo::getMaxBBoxCorner
Vec3 getMaxBBoxCorner() const
Definition: GeometryInfo.cpp:301
esys::lsm::BoolVector
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
esys::lsm::GeometryInfo::GeometryInfo
GeometryInfo()
Definition: GeometryInfo.cpp:228
esys::lsm::GeometryInfo::isIdenticalGeometry
bool isIdenticalGeometry(const GeometryInfo &) const
Definition: GeometryInfo.cpp:404
esys::lsm::GeometryInfo::Impl
Definition: GeometryInfo.cpp:26
Vec3
Definition: vec3.h:47
esys::lsm::GeometryInfo::Impl::m_is2d
bool m_is2d
Definition: GeometryInfo.cpp:58
vec3.h
esys::lsm::GeometryInfo::write
void write(std::ostream &oStream) const
Definition: GeometryInfo.cpp:338
esys::lsm::GeometryInfo::getBBoxCorners
Vec3Vector getBBoxCorners() const
Definition: GeometryInfo.cpp:287
esys::lsm::GeometryInfo::Impl::~Impl
~Impl()
Definition: GeometryInfo.cpp:85
esys::lsm::GeometryInfo::operator==
bool operator==(const GeometryInfo &geoInfo) const
Definition: GeometryInfo.cpp:260
GeometryInfo.h
esys::lsm::GeometryInfo::writeWithoutVersion
void writeWithoutVersion(std::ostream &oStream) const
Definition: GeometryInfo.cpp:343
esys::lsm::GeometryInfo::Impl::m_bBoxMax
Vec3 m_bBoxMax
Definition: GeometryInfo.cpp:51
esys::lsm::GeometryInfo::m_pImpl
Impl * m_pImpl
Definition: GeometryInfo.h:120
esys::lsm::GeometryInfo::read
void read(std::istream &iStream)
Definition: GeometryInfo.cpp:333