ESyS-Particle  2.3.4
VtkStructuredGrid.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_LSM_VTKSTRUCTUREDGRID_H
15 #define ESYS_LSM_VTKSTRUCTUREDGRID_H
16 
17 #include <vector>
18 #include <map>
19 #include <iostream>
20 #include <sstream>
21 
22 #include "Foundation/vec3.h"
23 #include "Geometry/Vec3L.h"
24 
26 
27 namespace esys
28 {
29  namespace lsm
30  {
31  namespace vtk
32  {
33  template <typename TmplPointType, typename TmplPointDataTypeTuple>
34  class StructuredPiece : public Piece<TmplPointType, TmplPointDataTypeTuple>
35  {
36  public:
38  typedef typename Inherited::PointType PointType;
39  typedef typename Inherited::PointValue PointValue;
41  typedef typename Inherited::PointData PointData;
42 
43  StructuredPiece(const PointType &pointType, const PointDataTypeTuple &pointDataType)
44  : Inherited(pointType, pointDataType),
45  m_minExtent(),
46  m_maxExtent()
47  {
48  }
49 
50  virtual ~StructuredPiece()
51  {
52  }
53 
54  void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
55  {
56  m_minExtent = minIndex;
57  m_maxExtent = maxIndex;
58  }
59 
60  virtual void writeXml(std::ostream &oStream)
61  {
62  oStream
63  << "<Piece Extent=\""
64  << getMinExtent()[0] << " "
65  << getMaxExtent()[0] << " "
66  << getMinExtent()[1] << " "
67  << getMaxExtent()[1] << " "
68  << getMinExtent()[2] << " "
69  << getMaxExtent()[2] << "\">"
70  << std::endl;
71  this->writePointsXml(oStream);
72  this->writePointDataXml(oStream);
73  this->writeCellDataXml(oStream);
74  oStream << "</Piece>";
75  }
76 
77  const Vec3L &getMinExtent() const
78  {
79  return m_minExtent;
80  }
81 
82  const Vec3L &getMaxExtent() const
83  {
84  return m_maxExtent;
85  }
86 
87  protected:
88 
89  private:
92  };
93 
95  {
96  private:
97  typedef std::vector<XmlPiece *> PiecePtrVector;
98 
99  public:
101  : m_pieceVector(),
102  m_minExtent(),
103  m_maxExtent()
104  {
105  }
106 
107  virtual ~StructuredGrid()
108  {
109  }
110 
111  void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
112  {
113  m_minExtent = minIndex;
114  m_maxExtent = maxIndex;
115  }
116 
117  template <typename TmplStructuredPiece>
118  void addPiece(TmplStructuredPiece &piece)
119  {
120  XmlPiece &xmlPiece = dynamic_cast<XmlPiece &>(piece);
121  m_pieceVector.push_back(&xmlPiece);
122  }
123 
124  virtual void writeXml(std::ostream &oStream)
125  {
126  oStream
127  << "<VTKFile type=\"StructuredGrid\" version=\"0.1\">\n"
128  << "<StructuredGrid WholeExtent=\""
129  << m_minExtent.X() << " "
130  << m_maxExtent.X() << " "
131  << m_minExtent.Y() << " "
132  << m_maxExtent.Y() << " "
133  << m_minExtent.Z() << " "
134  << m_maxExtent.Z() << "\">"
135  << std::endl;
136  for (
137  PiecePtrVector::const_iterator it = m_pieceVector.begin();
138  it != m_pieceVector.end();
139  it++
140  )
141  {
142  (*it)->writeXml(oStream);
143  oStream << "\n";
144  }
145  oStream << "</StructuredGrid>\n";
146  oStream << "</VTKFile>";
147  }
148  private:
152  };
153  }
154  }
155 }
156 
157 #endif
esys::lsm::vtk::StructuredGrid::setExtent
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:111
esys::lsm::Vec3L::Z
const Long & Z() const
Definition: Vec3L.h:119
esys::lsm::vtk::Piece::PointDataTypeTuple
TmplPointDataTypeTuple PointDataTypeTuple
Definition: VtkPiece.h:44
esys::lsm::vtk::StructuredPiece::PointDataTypeTuple
Inherited::PointDataTypeTuple PointDataTypeTuple
Definition: VtkStructuredGrid.h:40
Vec3L.h
esys::lsm::vtk::StructuredPiece::PointType
Inherited::PointType PointType
Definition: VtkStructuredGrid.h:38
esys::lsm::vtk::StructuredGrid::PiecePtrVector
std::vector< XmlPiece * > PiecePtrVector
Definition: VtkStructuredGrid.h:97
esys::lsm::vtk::StructuredPiece::StructuredPiece
StructuredPiece(const PointType &pointType, const PointDataTypeTuple &pointDataType)
Definition: VtkStructuredGrid.h:43
VtkStructuredGrid.h
esys::lsm::Vec3L::X
const Long & X() const
Definition: Vec3L.h:99
esys::lsm::vtk::StructuredGrid::~StructuredGrid
virtual ~StructuredGrid()
Definition: VtkStructuredGrid.h:107
VtkPiece.h
esys
Definition: CheckPointable.cpp:17
esys::lsm::vtk::StructuredGrid::m_maxExtent
Vec3L m_maxExtent
Definition: VtkStructuredGrid.h:151
esys::lsm::vtk::Piece
Definition: VtkPiece.h:40
esys::lsm::vtk::StructuredGrid::addPiece
void addPiece(TmplStructuredPiece &piece)
Definition: VtkStructuredGrid.h:118
esys::lsm::vtk::StructuredPiece::getMaxExtent
const Vec3L & getMaxExtent() const
Definition: VtkStructuredGrid.h:82
esys::lsm::vtk::StructuredPiece::PointValue
Inherited::PointValue PointValue
Definition: VtkStructuredGrid.h:39
esys::lsm::vtk::Piece::writePointsXml
virtual void writePointsXml(std::ostream &oStream)
Definition: VtkPiece.h:89
esys::lsm::vtk::StructuredGrid::m_pieceVector
PiecePtrVector m_pieceVector
Definition: VtkStructuredGrid.h:149
esys::lsm::vtk::Piece::PointType
TmplPointType PointType
Definition: VtkPiece.h:42
esys::lsm::vtk::StructuredGrid::StructuredGrid
StructuredGrid()
Definition: VtkStructuredGrid.h:100
esys::lsm::vtk::StructuredPiece::PointData
Inherited::PointData PointData
Definition: VtkStructuredGrid.h:41
Vec3
Definition: vec3.h:47
esys::lsm::vtk::Piece::PointData
PointDataTypeTuple::DataValueTuple PointData
Definition: VtkPiece.h:45
esys::lsm::Vec3L::Y
const Long & Y() const
Definition: Vec3L.h:109
esys::lsm::vtk::Piece::writePointDataXml
virtual void writePointDataXml(std::ostream &oStream)
Definition: VtkPiece.h:96
esys::lsm::vtk::StructuredPiece::writeXml
virtual void writeXml(std::ostream &oStream)
Definition: VtkStructuredGrid.h:60
vec3.h
esys::lsm::vtk::Piece::writeCellDataXml
virtual void writeCellDataXml(std::ostream &oStream)
Definition: VtkPiece.h:117
esys::lsm::vtk::StructuredPiece::setExtent
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:54
esys::lsm::Vec3L
Definition: Vec3L.h:29
esys::lsm::vtk::StructuredPiece::m_maxExtent
Vec3L m_maxExtent
Definition: VtkStructuredGrid.h:91
esys::lsm::vtk::StructuredPiece::m_minExtent
Vec3L m_minExtent
Definition: VtkStructuredGrid.h:90
esys::lsm::vtk::StructuredGrid::writeXml
virtual void writeXml(std::ostream &oStream)
Definition: VtkStructuredGrid.h:124
esys::lsm::vtk::StructuredPiece
Definition: VtkStructuredGrid.h:35
esys::lsm::vtk::StructuredPiece::~StructuredPiece
virtual ~StructuredPiece()
Definition: VtkStructuredGrid.h:50
esys::lsm::vtk::StructuredPiece::getMinExtent
const Vec3L & getMinExtent() const
Definition: VtkStructuredGrid.h:77
esys::lsm::vtk::StructuredPiece::Inherited
Piece< TmplPointType, TmplPointDataTypeTuple > Inherited
Definition: VtkStructuredGrid.h:37
esys::lsm::vtk::StructuredGrid::m_minExtent
Vec3L m_minExtent
Definition: VtkStructuredGrid.h:150
esys::lsm::vtk::StructuredGrid
Definition: VtkStructuredGrid.h:95
esys::lsm::vtk::XmlPiece
Definition: VtkPiece.h:33