ESyS-Particle  2.3
GeometryInfo.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
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 
92  IntVector getPeriodicDimensions() const;
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 
122  Impl *m_pImpl;
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
Vec3Vector getBBoxCorners() const
Definition: GeometryInfo.cpp:287
std::vector< Vec3 > Vec3Vector
Definition: GeometryInfo.h:27
Vec3 getMinBBoxCorner() const
Definition: GeometryInfo.cpp:296
void set_is2d(bool do2d)
Definition: GeometryInfo.cpp:282
Definition: vec3.h:46
bool isIdenticalGeometry(const GeometryInfo &) const
Definition: GeometryInfo.cpp:404
Definition: GeometryInfo.h:33
Definition: GeometryInfo.cpp:25
Definition: CheckPointable.cpp:16
IntVector getPeriodicDimensions() const
Definition: GeometryInfo.cpp:306
std::vector< int > IntVector
Definition: LatticeMaster.h:113
void setBBox(const Vec3 &min, const Vec3 &max)
Definition: GeometryInfo.cpp:348
bool operator==(const GeometryInfo &geoInfo) const
Definition: GeometryInfo.cpp:260
~GeometryInfo()
Definition: GeometryInfo.cpp:255
void setLsmGeoVersion(float version)
Definition: GeometryInfo.cpp:320
void setPeriodicDimensions(BoolVector periodicDimensions)
Definition: GeometryInfo.cpp:315
Vec3 getMaxBBoxCorner() const
Definition: GeometryInfo.cpp:301
void writeWithoutVersion(std::ostream &oStream) const
Definition: GeometryInfo.cpp:343
float getLsmGeoVersion() const
Definition: GeometryInfo.cpp:328
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
GeometryInfo()
Definition: GeometryInfo.cpp:228
GeometryInfo & operator=(const GeometryInfo &geoInfo)
Definition: GeometryInfo.cpp:249
bool isCompatible(const GeometryInfo &) const
Definition: GeometryInfo.cpp:360
void read(std::istream &iStream)
Definition: GeometryInfo.cpp:333
void write(std::ostream &oStream) const
Definition: GeometryInfo.cpp:338
bool is2d() const
Definition: GeometryInfo.cpp:277
bool hasAnyPeriodicDimensions() const
Definition: GeometryInfo.cpp:265
Impl * m_pImpl
Definition: GeometryInfo.h:120
std::ostream & operator<<(std::ostream &oStream, const SimpleConnectionData &connectionData)
Definition: GeometryReader.cpp:134