ESyS-Particle  2.3.4
CheckPointLoader.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 #ifndef ESYS_LSMCHECKPOINTLOADER_H
14 #define ESYS_LSMCHECKPOINTLOADER_H
15 
18 #include "Model/Particle.h"
20 
21 #include <vector>
22 #include <string>
23 #include <fstream>
24 
25 namespace esys
26 {
27  namespace lsm
28  {
29  typedef std::vector<std::string> StringVector;
30 
37  {
38  public:
39  class ParticleData : public CParticle
40  {
41  public:
43  {
44  }
45 
46  void read(std::istream &iStream)
47  {
48  loadCheckPointData(iStream);
49  }
50  };
51 
53  {
54  public:
56  {
57  }
58 
59  void read(std::istream &iStream)
60  {
61  loadCheckPointData(iStream);
62  }
63  };
64 
65  class ParticleReader : public IterativeReader<IStreamIterator<ParticleData> >
66  {
67  public:
69 
70  ParticleReader(std::istream &iStream) : IterativeReader<IStreamIterator<ParticleData> >(iStream)
71  {
72  }
73 
74  virtual void initialise()
75  {
76  int numParticles = 0;
77  getIStream() >> numParticles;
78  setNumElements(numParticles);
80  }
81  };
82 
83  class ConnectionReader : public IterativeReader<IStreamIterator<ConnectionData> >
84  {
85  public:
86  ConnectionReader(std::istream &iStream) : IterativeReader<IStreamIterator<ConnectionData> >(iStream)
87  {
88  }
89 
90  virtual void initialise()
91  {
92  int numConnections = 0;
93  getIStream() >> numConnections;
94  setNumElements(numConnections);
96  }
97  };
98 
99  CheckPointLoader(const StringVector &fileNames) : m_fileNames(fileNames)
100  {
101  }
102 
103  template<class TmplLsmData>
104  void loadInto(TmplLsmData &lsmData)
105  {
106  for (
107  StringVector::const_iterator it = m_fileNames.begin();
108  it != m_fileNames.end();
109  it++
110  )
111  {
112  std::ifstream iStream(it->c_str());
113  ParticleReader pReader(iStream);
114  lsmData.template addParticles<ParticleReader::Iterator,CParticle>(pReader.getIterator());
115 
116  int numConnectionGroups = 0;
117  iStream >> numConnectionGroups;
118  for (int i = 0; i < numConnectionGroups; i++) {
119  ConnectionReader cReader(iStream);
120  lsmData.addConnections(cReader.getIterator());
121  }
122  }
123  }
124 
125  private:
127  };
128  }
129 }
130 
131 #endif
esys::lsm::CheckPointLoader
Definition: CheckPointLoader.h:37
esys::lsm::CheckPointLoader::ConnectionReader::ConnectionReader
ConnectionReader(std::istream &iStream)
Definition: CheckPointLoader.h:86
esys::lsm::IterativeReader< IStreamIterator< ParticleData > >::setNumElements
void setNumElements(int numElements)
Definition: IterativeReader.hpp:77
esys::lsm::CheckPointLoader::ConnectionData::read
void read(std::istream &iStream)
Definition: CheckPointLoader.h:59
esys::lsm::StringVector
std::vector< std::string > StringVector
Definition: CheckPointInfo.h:24
esys::lsm::IterativeReader< IStreamIterator< ParticleData > >::getIStream
std::istream & getIStream()
Definition: IterativeReader.hpp:83
BondedInteraction.h
esys::lsm::CheckPointLoader::ParticleData::read
void read(std::istream &iStream)
Definition: CheckPointLoader.h:46
esys::lsm::CheckPointLoader::ParticleReader::initialise
virtual void initialise()
Definition: CheckPointLoader.h:74
esys::lsm::CheckPointLoader::ParticleReader
Definition: CheckPointLoader.h:66
esys
Definition: CheckPointable.cpp:17
BondedInteractionCpData.h
BondedInteractionCpData
Definition: BondedInteractionCpData.h:26
esys::lsm::CheckPointLoader::ParticleReader::Iterator
IterativeReader< IStreamIterator< ParticleData > >::Iterator Iterator
Definition: CheckPointLoader.h:68
esys::lsm::CheckPointLoader::m_fileNames
StringVector m_fileNames
Definition: CheckPointLoader.h:126
CParticle::loadCheckPointData
virtual void loadCheckPointData(std::istream &iStream)
Definition: Particle.cpp:457
esys::lsm::IterativeReader::getIterator
Iterator & getIterator()
Definition: IterativeReader.hpp:113
BondedInteractionCpData::loadCheckPointData
virtual void loadCheckPointData(std::istream &iStream)
Definition: BondedInteractionCpData.cpp:94
CheckPointLoader.h
esys::lsm::CheckPointLoader::loadInto
void loadInto(TmplLsmData &lsmData)
Definition: CheckPointLoader.h:104
esys::lsm::CheckPointLoader::CheckPointLoader
CheckPointLoader(const StringVector &fileNames)
Definition: CheckPointLoader.h:99
esys::lsm::CheckPointLoader::ParticleData
Definition: CheckPointLoader.h:40
esys::lsm::CheckPointLoader::ParticleData::ParticleData
ParticleData()
Definition: CheckPointLoader.h:42
esys::lsm::CheckPointLoader::ConnectionData
Definition: CheckPointLoader.h:53
esys::lsm::CheckPointLoader::ConnectionReader::initialise
virtual void initialise()
Definition: CheckPointLoader.h:90
esys::lsm::IterativeReader
Definition: IterativeReader.h:75
IterativeReader.h
esys::lsm::IStreamIterator
Definition: IterativeReader.h:29
esys::lsm::CheckPointLoader::ConnectionData::ConnectionData
ConnectionData()
Definition: CheckPointLoader.h:55
CParticle
Class for a basic particle.
Definition: Particle.h:51
esys::lsm::CheckPointLoader::ConnectionReader
Definition: CheckPointLoader.h:84
esys::lsm::CheckPointLoader::ParticleReader::ParticleReader
ParticleReader(std::istream &iStream)
Definition: CheckPointLoader.h:70
Particle.h