ESyS-Particle  2.3.4
GeometryReader.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_LSMGEOMETRYREADER_H
15 #define ESYS_LSMGEOMETRYREADER_H
16 
17 #include "Foundation/vec3.h"
19 #include "Geometry/GeometryInfo.h"
21 
22 #include <string>
23 #include <vector>
24 #include <iostream>
25 
26 typedef std::vector<bool> BoolVector;
27 typedef std::vector<int> IntVector;
28 typedef std::vector<Vec3> Vec3Vector;
29 
33 namespace esys
34 {
38  namespace lsm
39  {
40  class ParticleIterator : public IStreamIterator<SimpleParticleData>
41  {
42  public:
44 
45  ParticleIterator(std::istream &iStream, int numElements, bool is2d = true)
46  : IStreamIterator<SimpleParticleData>(iStream, numElements),
47  m_is2d(is2d)
48  {
49  }
50 
51  protected:
52  virtual void readDataFromStream()
53  {
55 
56  double mass = M_PI*m_data.getRadius() * m_data.getRadius();
57  if (!m_is2d)
58  {
59  mass *= (4.0/3.0)*m_data.getRadius();
60  }
61  m_data.setMass(mass);
62  }
63 
64  private:
65  bool m_is2d;
66  };
67 
71  class ParticleReader : public IterativeReader<ParticleIterator>
72  {
73  public:
77  ParticleReader(std::istream &iStream, bool is2d);
78 
84  virtual void initialise();
85 
89  const std::string &getParticleType();
90 
91  protected:
93 
94  private:
95  std::string m_particleType;
96  bool m_is2d;
97  };
98 
103  {
104  public:
107 
109 
110  SimpleConnectionData(Id p1Id, Id p2Id, Tag tag);
111 
112  bool operator==(const SimpleConnectionData &particleData) const;
113 
114  const Id &getP1Id() const;
115 
116  const Id &getP2Id() const;
117 
118  const Tag &getTag() const;
119 
120  void read(std::istream &istream);
121 
122  void write(std::ostream &write) const;
123 
124  private:
128  };
129 
130  std::istream &operator>>(std::istream &iStream, SimpleConnectionData &connectionData);
131  std::ostream &operator<<(std::ostream &oStream, const SimpleConnectionData &connectionData);
132 
136  class ConnectionReader : public IterativeReader<IStreamIterator<SimpleConnectionData> >
137  {
138  public:
142  ConnectionReader(std::istream &iStream);
143 
149  virtual void initialise();
150 
151  private:
152  };
153 
159  {
160  public:
171  GeometryReader(const std::string &fileName);
172 
181  GeometryReader(std::istream &iStream);
182 
186  virtual ~GeometryReader();
187 
192  const std::string &getFileName() const;
193 
197  const std::string &getParticleType();
198 
203  const GeometryInfo &getGeometryInfo() const;
204 
209 
214 
215  protected:
219  void initialise();
220 
221  private:
222  GeometryReader(const GeometryReader &geoReader);
223  GeometryReader &operator=(const GeometryReader &geoReader) const;
224 
225  class Impl;
226 
228  };
229  } // namespace lsm
230 } // namespace esys
231 
232 #endif
esys::lsm::SimpleConnectionData::getP2Id
const Id & getP2Id() const
Definition: GeometryReader.cpp:102
BoolVector
std::vector< bool > BoolVector
Definition: GeometryReader.h:26
esys::lsm::ParticleReader::createNewIterator
virtual ParticleIterator * createNewIterator()
Definition: GeometryReader.cpp:54
esys::lsm::ParticleReader::getParticleType
const std::string & getParticleType()
Definition: GeometryReader.cpp:59
esys::lsm::GeometryReader::Impl::m_particleReaderPtr
ParticleReaderPtr m_particleReaderPtr
Definition: GeometryReader.cpp:189
esys::lsm::IterativeReader< ParticleIterator >::setNumElements
void setNumElements(int numElements)
Definition: IterativeReader.hpp:77
esys::lsm::GeometryReader::Impl
Definition: GeometryReader.cpp:167
esys::lsm::GeometryReader::operator=
GeometryReader & operator=(const GeometryReader &geoReader) const
esys::lsm::GeometryReader::ConnectionIterator
ConnectionReader::Iterator ConnectionIterator
Definition: GeometryReader.h:162
esys::lsm::ParticleReader::initialise
virtual void initialise()
Definition: GeometryReader.cpp:34
esys::lsm::IterativeReader< ParticleIterator >::getIStream
std::istream & getIStream()
Definition: IterativeReader.hpp:83
Console::Debug
Console & Debug()
set verbose level of next message to "dbg"
esys::lsm::ParticleReader::m_is2d
bool m_is2d
Definition: GeometryReader.h:96
esys::lsm::ParticleReader::m_particleType
std::string m_particleType
Definition: GeometryReader.h:95
esys::lsm::GeometryReader::initialise
void initialise()
esys::lsm::GeometryReader::ParticleIterator
ParticleReader::Iterator ParticleIterator
Definition: GeometryReader.h:161
esys::lsm::SimpleConnectionData::Id
SimpleParticleData::Id Id
Definition: GeometryReader.h:105
esys::lsm::IStreamIterator< SimpleParticleData >::m_data
SimpleParticleData m_data
Definition: IterativeReader.h:60
esys::lsm::SimpleConnectionData::m_tag
Tag m_tag
Definition: GeometryReader.h:127
Vec3Vector
std::vector< Vec3 > Vec3Vector
Definition: GeometryReader.h:28
esys::lsm::GeometryReader::Impl::m_geoInfo
GeometryInfo m_geoInfo
Definition: GeometryReader.cpp:186
esys::lsm::IterativeReader< ParticleIterator >::getNumElements
int getNumElements() const
Definition: IterativeReader.hpp:71
esys::lsm::ParticleIterator::value_type
IStreamIterator< SimpleParticleData >::value_type value_type
Definition: GeometryReader.h:43
esys::lsm::GeometryReader::GeometryReader
GeometryReader(const std::string &fileName)
Definition: GeometryReader.cpp:249
console.h
esys::lsm::SimpleConnectionData::operator==
bool operator==(const SimpleConnectionData &particleData) const
Definition: GeometryReader.cpp:83
esys::lsm::GeometryReader::Impl::m_pIStream
std::istream * m_pIStream
Definition: GeometryReader.cpp:188
esys::lsm::GeometryReader::Impl::m_connectionReaderPtr
ConnectionReaderPtr m_connectionReaderPtr
Definition: GeometryReader.cpp:190
esys::lsm::SimpleConnectionData
Definition: GeometryReader.h:103
esys::lsm::SimpleConnectionData::getP1Id
const Id & getP1Id() const
Definition: GeometryReader.cpp:97
esys::lsm::ParticleReader
Definition: GeometryReader.h:72
esys::lsm::IStreamIterator::readDataFromStream
virtual void readDataFromStream()
Definition: IterativeReader.hpp:37
esys::lsm::GeometryReader::m_pImpl
Impl * m_pImpl
Definition: GeometryReader.h:225
esys::lsm::SimpleConnectionData::m_particle1Id
Id m_particle1Id
Definition: GeometryReader.h:125
esys::lsm::SimpleParticleData
Definition: SimpleParticleData.h:28
esys::lsm::ConnectionReader::ConnectionReader
ConnectionReader(std::istream &iStream)
Definition: GeometryReader.cpp:142
esys::lsm::GeometryReader::Impl::Impl
Impl(const std::string &fileName)
Definition: GeometryReader.cpp:193
esys::lsm::SimpleParticleData::setMass
void setMass(double mass)
Definition: SimpleParticleData.hpp:144
esys
Definition: CheckPointable.cpp:17
esys::lsm::IterativeReader< ParticleIterator >::isInitialised
bool isInitialised() const
Definition: IterativeReader.hpp:107
esys::lsm::operator<<
std::ostream & operator<<(std::ostream &oStream, const SimpleConnectionData &connectionData)
Definition: GeometryReader.cpp:134
esys::lsm::SimpleConnectionData::m_particle2Id
Id m_particle2Id
Definition: GeometryReader.h:126
esys::lsm::GeometryReader::Impl::ConnectionReaderPtr
std::auto_ptr< ConnectionReader > ConnectionReaderPtr
Definition: GeometryReader.cpp:182
esys::lsm::GeometryReader::getGeometryInfo
const GeometryInfo & getGeometryInfo() const
Definition: GeometryReader.cpp:266
esys::lsm::SimpleParticleData::getRadius
double getRadius() const
Definition: SimpleParticleData.hpp:134
esys::lsm::ParticleIterator::ParticleIterator
ParticleIterator(std::istream &iStream, int numElements, bool is2d=true)
Definition: GeometryReader.h:45
esys::lsm::GeometryReader::getParticleIterator
ParticleIterator & getParticleIterator()
Definition: GeometryReader.cpp:281
NULL
#define NULL
Definition: t_list.h:17
esys::lsm::SimpleParticleData::Tag
int Tag
Definition: SimpleParticleData.h:31
esys::lsm::IterativeReader::initialise
virtual void initialise()
Definition: IterativeReader.hpp:101
IntVector
std::vector< int > IntVector
Definition: GeometryReader.h:27
esys::lsm::GeometryInfo
Definition: GeometryInfo.h:34
esys::lsm::SimpleConnectionData::SimpleConnectionData
SimpleConnectionData()
Definition: GeometryReader.cpp:69
esys::lsm::GeometryReader::Impl::~Impl
~Impl()
Definition: GeometryReader.cpp:245
esys::lsm::GeometryReader
Definition: GeometryReader.h:159
esys::lsm::GeometryReader::getParticleType
const std::string & getParticleType()
Definition: GeometryReader.cpp:276
esys::lsm::GeometryReader::Impl::initialiseFile
void initialiseFile()
Definition: GeometryReader.cpp:221
esys::lsm::GeometryReader::Impl::initialise
void initialise()
Definition: GeometryReader.cpp:234
esys::lsm::ParticleIterator::readDataFromStream
virtual void readDataFromStream()
Definition: GeometryReader.h:52
esys::lsm::GeometryReader::getFileName
const std::string & getFileName() const
Definition: GeometryReader.cpp:271
esys::lsm::ConnectionReader
Definition: GeometryReader.h:137
vec3.h
esys::lsm::SimpleConnectionData::getTag
const Tag & getTag() const
Definition: GeometryReader.cpp:107
esys::lsm::SimpleConnectionData::read
void read(std::istream &istream)
Definition: GeometryReader.cpp:112
esys::lsm::IterativeReader
Definition: IterativeReader.h:75
IterativeReader.h
esys::lsm::IStreamIterator
Definition: IterativeReader.h:29
esys::lsm::SimpleConnectionData::write
void write(std::ostream &write) const
Definition: GeometryReader.cpp:120
esys::lsm::GeometryReader::GeometryReader
GeometryReader(const GeometryReader &geoReader)
GeometryReader.h
esys::lsm::GeometryReader::getConnectionIterator
ConnectionIterator & getConnectionIterator()
Definition: GeometryReader.cpp:286
esys::lsm::GeometryReader::Impl::initialiseStream
void initialiseStream()
Definition: GeometryReader.cpp:213
esys::lsm::GeometryReader::Impl::ParticleReaderPtr
std::auto_ptr< ParticleReader > ParticleReaderPtr
Definition: GeometryReader.cpp:181
esys::lsm::ParticleIterator::m_is2d
bool m_is2d
Definition: GeometryReader.h:65
esys::lsm::ConnectionReader::initialise
virtual void initialise()
Definition: GeometryReader.cpp:147
esys::lsm::ParticleIterator
Definition: GeometryReader.h:41
console
Console console
Definition: console.cpp:25
esys::lsm::GeometryReader::~GeometryReader
virtual ~GeometryReader()
Definition: GeometryReader.cpp:261
esys::lsm::GeometryReader::Impl::m_iStreamPtr
IStreamPtr m_iStreamPtr
Definition: GeometryReader.cpp:187
SimpleParticleData.h
esys::lsm::ParticleReader::ParticleReader
ParticleReader(std::istream &iStream, bool is2d)
Definition: GeometryReader.cpp:28
esys::lsm::GeometryReader::Impl::m_fileName
std::string m_fileName
Definition: GeometryReader.cpp:185
GeometryInfo.h
esys::lsm::GeometryReader::Impl::IStreamPtr
std::auto_ptr< std::istream > IStreamPtr
Definition: GeometryReader.cpp:183
esys::lsm::SimpleConnectionData::Tag
SimpleParticleData::Tag Tag
Definition: GeometryReader.h:106
esys::lsm::operator>>
std::istream & operator>>(std::istream &iStream, SimpleConnectionData &connectionData)
Definition: GeometryReader.cpp:128
esys::lsm::SimpleParticleData::Id
int Id
Definition: SimpleParticleData.h:30