ESyS-Particle  2.3
VtkStructuredGrid.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_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:
149  PiecePtrVector m_pieceVector;
152  };
153  }
154  }
155 }
156 
157 #endif
StructuredPiece(const PointType &pointType, const PointDataTypeTuple &pointDataType)
Definition: VtkStructuredGrid.h:43
const Long & Y() const
Definition: Vec3L.h:109
Vec3L m_minExtent
Definition: VtkStructuredGrid.h:150
StructuredGrid()
Definition: VtkStructuredGrid.h:100
Inherited::PointValue PointValue
Definition: VtkStructuredGrid.h:39
Definition: vec3.h:46
Inherited::PointDataTypeTuple PointDataTypeTuple
Definition: VtkStructuredGrid.h:40
virtual ~StructuredPiece()
Definition: VtkStructuredGrid.h:50
TmplPointType PointType
Definition: VtkPiece.h:42
const Long & Z() const
Definition: Vec3L.h:119
void addPiece(TmplStructuredPiece &piece)
Definition: VtkStructuredGrid.h:118
Inherited::PointData PointData
Definition: VtkStructuredGrid.h:41
Definition: CheckPointable.cpp:16
PointDataTypeTuple::DataValueTuple PointData
Definition: VtkPiece.h:45
virtual void writeCellDataXml(std::ostream &oStream)
Definition: VtkPiece.h:117
Definition: Vec3L.h:28
virtual ~StructuredGrid()
Definition: VtkStructuredGrid.h:107
virtual void writePointDataXml(std::ostream &oStream)
Definition: VtkPiece.h:96
Definition: VtkStructuredGrid.h:94
Definition: VtkPiece.h:39
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:54
virtual void writePointsXml(std::ostream &oStream)
Definition: VtkPiece.h:89
PiecePtrVector m_pieceVector
Definition: VtkStructuredGrid.h:149
void setExtent(const Vec3L &minIndex, const Vec3L &maxIndex)
Definition: VtkStructuredGrid.h:111
std::vector< XmlPiece * > PiecePtrVector
Definition: VtkStructuredGrid.h:97
Piece< TmplPointType, TmplPointDataTypeTuple > Inherited
Definition: VtkStructuredGrid.h:37
virtual void writeXml(std::ostream &oStream)
Definition: VtkStructuredGrid.h:124
virtual void writeXml(std::ostream &oStream)
Definition: VtkStructuredGrid.h:60
const Long & X() const
Definition: Vec3L.h:99
const Vec3L & getMinExtent() const
Definition: VtkStructuredGrid.h:77
Inherited::PointType PointType
Definition: VtkStructuredGrid.h:38
Definition: VtkPiece.h:32
Vec3L m_maxExtent
Definition: VtkStructuredGrid.h:91
TmplPointDataTypeTuple PointDataTypeTuple
Definition: VtkPiece.h:44
Vec3L m_maxExtent
Definition: VtkStructuredGrid.h:151
const Vec3L & getMaxExtent() const
Definition: VtkStructuredGrid.h:82
Definition: VtkStructuredGrid.h:34
Vec3L m_minExtent
Definition: VtkStructuredGrid.h:90