vtkUnstructuredReader.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::vtkUnstructuredReader
26 
27 Description
28  Reader for vtk unstructured_grid legacy files. Supports single CELLS, POINTS
29  etc. entry only.
30 
31  - all integer types (int, unsigned_int, long etc.) become Foam::label
32  - all real types (float, double) become Foam::scalar
33  - POINTS becomes OpenFOAM points
34  - CELLS gets split into OpenFOAM
35  - cells
36  - faces
37  - lines
38  - CELL_DATA or POINT_DATA gets stored on the corresponding objectRegistry
39  in original vtk numbering order so use e.g. faceMap() to go from entry
40  in faces() back to vtk numbering.
41 
42 SourceFiles
43  vtkUnstructuredReader.C
44 
45 \*---------------------------------------------------------------------------*/
46 
47 #ifndef vtkUnstructuredReader_H
48 #define vtkUnstructuredReader_H
49 
50 #include "objectRegistry.H"
51 #include "cellShapeList.H"
52 #include "HashSet.H"
53 #include "NamedEnum.H"
54 
55 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
56 
57 namespace Foam
58 {
59 
60 /*---------------------------------------------------------------------------*\
61  Class vtkUnstructuredReader Declaration
62 \*---------------------------------------------------------------------------*/
63 
65 {
66 public:
67 
68  // Public data types
69 
70  //- Enumeration defining the vtk data types
71  enum vtkDataType
72  {
80  VTK_ID
81  };
82 
84 
85 
86  //- Enumeration defining the vtk dataset types
87  enum vtkDataSetType
88  {
92  };
93 
95 
96 
97  //- Enumeration defining the parse mode - what type of data is being
98  // read
99  enum parseMode
100  {
105  POINT_DATA
106  };
107 
109 
110 
111  //- Enumeration defining the cell types
112  enum vtkTypes
113  {
117  VTK_LINE = 3,
123  VTK_QUAD = 9,
124  VTK_TETRA = 10,
125  VTK_VOXEL = 11,
127  VTK_WEDGE = 13,
130  VTK_HEXAGONAL_PRISM = 16,
131  };
132 
133 
134 private:
135 
136  //- Header
137  string header_;
138 
139  //- Title
140  string title_;
141 
142  //- DataType
143  string dataType_;
144 
145 
146  // Geometry
147 
148  //- Points
150 
151  //- 3D cells.
153 
154  //- Map from cells back to original ID
156 
157  //- 2D cells (=faces)
159 
160  //- Map from faces back to original ID
162 
163  //- 1D cells (=edges)
165 
167 
168 
169  // Data
170 
171  //- Cell based fields
173 
174  //- Point based fields
176 
177  //- Other fields
179 
180 
181 
182  // Private Member Functions
183 
184  template<class T>
185  void readBlock
186  (
187  Istream& inFile,
188  const label n,
189  List<T>& lst
190  ) const;
191 
192  void warnUnhandledType
193  (
194  Istream& inFile,
195  const label type,
196  labelHashSet& warningGiven
197  ) const;
198 
199  void extractCells
200  (
201  Istream& inFile,
202  const labelList& cellTypes,
203  const labelList& cellVertData
204  );
205 
206  void readField
207  (
208  ISstream& inFile,
209  objectRegistry& obj,
210  const word& arrayName,
211  const word& dataType,
212  const label size
213  ) const;
214 
216  (
217  ISstream& inFile,
218  objectRegistry& obj,
219  const label wantedSize
220  ) const;
221 
222  objectRegistry& selectRegistry(const parseMode readMode);
223 
224  void read(ISstream& inFile);
225 
226  //- Dissallow assignment
227  void operator=(const vtkUnstructuredReader&);
228 
229 
230 public:
231 
232  //- Runtime type information
233  ClassName("vtkUnstructuredReader");
234 
235  // Constructors
236 
237  //- Construct from Istream, read all
239 
240  // Member Functions
241 
242  //- Header
243  const string header() const
244  {
245  return header_;
246  }
247 
248  //- Title
249  const string& title() const
250  {
251  return title_;
252  }
253 
254  //- DataType
255  const string& dataType() const
256  {
257  return dataType_;
258  }
259 
260 
261  //- Points
262  const pointField& points() const
263  {
264  return points_;
265  }
266 
267  pointField& points()
268  {
269  return points_;
270  }
271 
272  //- 3D cells.
273  const cellShapeList& cells() const
274  {
275  return cells_;
276  }
277 
279  {
280  return cells_;
281  }
282 
283  const labelList& cellMap() const
284  {
285  return cellMap_;
286  }
287 
288  //- 2D cells (=faces)
289  const faceList& faces() const
290  {
291  return faces_;
292  }
293 
294  faceList& faces()
295  {
296  return faces_;
297  }
298 
299  const labelList& faceMap() const
300  {
301  return faceMap_;
302  }
303 
304  //- 1D cells (=open lines)
305  const labelListList& lines() const
306  {
307  return lines_;
308  }
309 
311  {
312  return lines_;
313  }
314 
315  const labelList& lineMap() const
316  {
317  return lineMap_;
318  }
319 
320  //- Cell based fields
321  const objectRegistry& cellData() const
322  {
323  return cellData_;
324  }
325 
327  {
328  return cellData_;
329  }
330 
331  //- Point based fields
332  const objectRegistry& pointData() const
333  {
334  return pointData_;
335  }
336 
338  {
339  return pointData_;
340  }
341 
342  //- Other fields
343  const objectRegistry& otherData() const
344  {
345  return otherData_;
346  }
347 
349  {
350  return otherData_;
351  }
352 
353 
354  //- Debug: print contents of objectRegistry
355  template<class Type>
356  void printFieldStats(const objectRegistry&) const;
357 
358 };
359 
360 
361 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
362 
363 } // End namespace Foam
364 
365 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
366 
367 #ifdef NoRepository
369 #endif
370 
371 
372 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
373 
374 #endif
375 
376 // ************************************************************************* //
Foam::vtkUnstructuredReader::VTK_WEDGE
@ VTK_WEDGE
Definition: vtkUnstructuredReader.H:126
Foam::vtkUnstructuredReader::VTK_TRIANGLE_STRIP
@ VTK_TRIANGLE_STRIP
Definition: vtkUnstructuredReader.H:119
Foam::vtkUnstructuredReader::lineMap
const labelList & lineMap() const
Definition: vtkUnstructuredReader.H:314
Foam::vtkUnstructuredReader::VTK_POLY_VERTEX
@ VTK_POLY_VERTEX
Definition: vtkUnstructuredReader.H:115
Foam::vtkUnstructuredReader::vtkDataSetType
vtkDataSetType
Enumeration defining the vtk dataset types.
Definition: vtkUnstructuredReader.H:86
Foam::vtkUnstructuredReader::cellMap
const labelList & cellMap() const
Definition: vtkUnstructuredReader.H:282
Foam::word
A class for handling words, derived from string.
Definition: word.H:59
Foam::vtkUnstructuredReader::VTK_PYRAMID
@ VTK_PYRAMID
Definition: vtkUnstructuredReader.H:127
Foam::vtkUnstructuredReader::faces
const faceList & faces() const
2D cells (=faces)
Definition: vtkUnstructuredReader.H:288
Foam::vtkUnstructuredReader::POLYDATA
@ POLYDATA
Definition: vtkUnstructuredReader.H:102
Foam::vtkUnstructuredReader::cellData
const objectRegistry & cellData() const
Cell based fields.
Definition: vtkUnstructuredReader.H:320
Foam::vtkUnstructuredReader::header_
string header_
Header.
Definition: vtkUnstructuredReader.H:136
Foam::vtkUnstructuredReader::parseModeNames
static const NamedEnum< parseMode, 5 > parseModeNames
Definition: vtkUnstructuredReader.H:107
Foam::vtkUnstructuredReader::VTK_FLOAT
@ VTK_FLOAT
Definition: vtkUnstructuredReader.H:76
Foam::vtkUnstructuredReader::readFieldArray
wordList readFieldArray(ISstream &inFile, objectRegistry &obj, const label wantedSize) const
Definition: vtkUnstructuredReader.C:463
Foam::vtkUnstructuredReader::VTK_STRING
@ VTK_STRING
Definition: vtkUnstructuredReader.H:78
Foam::vtkUnstructuredReader::warnUnhandledType
void warnUnhandledType(Istream &inFile, const label type, labelHashSet &warningGiven) const
Definition: vtkUnstructuredReader.C:86
Foam::vtkUnstructuredReader
Reader for vtk unstructured_grid legacy files. Supports single CELLS, POINTS etc. entry only.
Definition: vtkUnstructuredReader.H:63
NamedEnum.H
Foam::vtkUnstructuredReader::VTK_PENTAGONAL_PRISM
@ VTK_PENTAGONAL_PRISM
Definition: vtkUnstructuredReader.H:128
Foam::vtkUnstructuredReader::vtkDataTypeNames
static const NamedEnum< vtkDataType, 8 > vtkDataTypeNames
Definition: vtkUnstructuredReader.H:82
Foam::vtkUnstructuredReader::points
const pointField & points() const
Points.
Definition: vtkUnstructuredReader.H:261
cellShapeList.H
vtkUnstructuredReaderTemplates.C
Foam::vtkUnstructuredReader::cellMap_
labelList cellMap_
Map from cells back to original ID.
Definition: vtkUnstructuredReader.H:154
objectRegistry.H
Foam::vtkUnstructuredReader::pointData
const objectRegistry & pointData() const
Point based fields.
Definition: vtkUnstructuredReader.H:331
Foam::vtkUnstructuredReader::UNSTRUCTURED_GRID
@ UNSTRUCTURED_GRID
Definition: vtkUnstructuredReader.H:101
Foam::ISstream
Generic input stream.
Definition: ISstream.H:51
Foam::vtkUnstructuredReader::VTK_ULONG
@ VTK_ULONG
Definition: vtkUnstructuredReader.H:75
Foam::vtkUnstructuredReader::VTK_HEXAHEDRON
@ VTK_HEXAHEDRON
Definition: vtkUnstructuredReader.H:125
Foam::vtkUnstructuredReader::printFieldStats
void printFieldStats(const objectRegistry &) const
Debug: print contents of objectRegistry.
Definition: vtkUnstructuredReaderTemplates.C:53
Foam::vtkUnstructuredReader::faces
faceList & faces()
Definition: vtkUnstructuredReader.H:293
Foam::vtkUnstructuredReader::lines_
labelListList lines_
1D cells (=edges)
Definition: vtkUnstructuredReader.H:163
Foam::vtkUnstructuredReader::VTK_VERTEX
@ VTK_VERTEX
Definition: vtkUnstructuredReader.H:114
Foam::HashSet< label, Hash< label > >
Foam::vtkUnstructuredReader::vtkDataSetTypeNames
static const NamedEnum< vtkDataSetType, 3 > vtkDataSetTypeNames
Definition: vtkUnstructuredReader.H:93
Foam::vtkUnstructuredReader::VTK_HEXAGONAL_PRISM
@ VTK_HEXAGONAL_PRISM
Definition: vtkUnstructuredReader.H:129
Foam::vtkUnstructuredReader::pointData
objectRegistry & pointData()
Definition: vtkUnstructuredReader.H:336
Foam::vtkUnstructuredReader::VTK_POLY_LINE
@ VTK_POLY_LINE
Definition: vtkUnstructuredReader.H:117
Foam::vtkUnstructuredReader::VTK_INT
@ VTK_INT
Definition: vtkUnstructuredReader.H:72
Foam::vtkUnstructuredReader::VTK_FIELD
@ VTK_FIELD
Definition: vtkUnstructuredReader.H:88
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:50
n
label n
Definition: TABSMDCalcMethod2.H:31
Foam::vtkUnstructuredReader::vtkUnstructuredReader
vtkUnstructuredReader(const objectRegistry &obr, ISstream &)
Construct from Istream, read all.
Definition: vtkUnstructuredReader.C:538
Foam::vtkUnstructuredReader::vtkDataType
vtkDataType
Enumeration defining the vtk data types.
Definition: vtkUnstructuredReader.H:70
Foam::vtkUnstructuredReader::VTK_SCALARS
@ VTK_SCALARS
Definition: vtkUnstructuredReader.H:89
Foam::vtkUnstructuredReader::read
void read(ISstream &inFile)
Definition: vtkUnstructuredReader.C:551
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::Field
Pre-declare SubField and related Field type.
Definition: Field.H:57
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:57
Foam::vtkUnstructuredReader::otherData_
objectRegistry otherData_
Other fields.
Definition: vtkUnstructuredReader.H:177
Foam::vtkUnstructuredReader::otherData
const objectRegistry & otherData() const
Other fields.
Definition: vtkUnstructuredReader.H:342
Foam::vtkUnstructuredReader::cellData_
objectRegistry cellData_
Cell based fields.
Definition: vtkUnstructuredReader.H:171
Foam::vtkUnstructuredReader::readField
void readField(ISstream &inFile, objectRegistry &obj, const word &arrayName, const word &dataType, const label size) const
Definition: vtkUnstructuredReader.C:361
Foam::vtkUnstructuredReader::VTK_TETRA
@ VTK_TETRA
Definition: vtkUnstructuredReader.H:123
Foam::vtkUnstructuredReader::title
const string & title() const
Title.
Definition: vtkUnstructuredReader.H:248
Foam::vtkUnstructuredReader::cells
cellShapeList & cells()
Definition: vtkUnstructuredReader.H:277
Foam::vtkUnstructuredReader::faceMap_
labelList faceMap_
Map from faces back to original ID.
Definition: vtkUnstructuredReader.H:160
Foam::vtkUnstructuredReader::dataType
const string & dataType() const
DataType.
Definition: vtkUnstructuredReader.H:254
Foam::vtkUnstructuredReader::extractCells
void extractCells(Istream &inFile, const labelList &cellTypes, const labelList &cellVertData)
Definition: vtkUnstructuredReader.C:102
Foam::vtkUnstructuredReader::operator=
void operator=(const vtkUnstructuredReader &)
Dissallow assignment.
Foam::vtkUnstructuredReader::header
const string header() const
Header.
Definition: vtkUnstructuredReader.H:242
Foam::vtkUnstructuredReader::VTK_UINT
@ VTK_UINT
Definition: vtkUnstructuredReader.H:73
Foam::vtkUnstructuredReader::VTK_POLYGON
@ VTK_POLYGON
Definition: vtkUnstructuredReader.H:120
HashSet.H
Foam::vtkUnstructuredReader::VTK_VECTORS
@ VTK_VECTORS
Definition: vtkUnstructuredReader.H:90
Foam::vtkUnstructuredReader::ClassName
ClassName("vtkUnstructuredReader")
Runtime type information.
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::vtkUnstructuredReader::VTK_LINE
@ VTK_LINE
Definition: vtkUnstructuredReader.H:116
Foam::vtkUnstructuredReader::cells_
cellShapeList cells_
3D cells.
Definition: vtkUnstructuredReader.H:151
Foam::vtkUnstructuredReader::points_
pointField points_
Points.
Definition: vtkUnstructuredReader.H:148
Foam::vtkUnstructuredReader::VTK_EMPTY_CELL
@ VTK_EMPTY_CELL
Definition: vtkUnstructuredReader.H:113
Foam::vtkUnstructuredReader::VTK_VOXEL
@ VTK_VOXEL
Definition: vtkUnstructuredReader.H:124
Foam::vtkUnstructuredReader::VTK_TRIANGLE
@ VTK_TRIANGLE
Definition: vtkUnstructuredReader.H:118
Foam::vtkUnstructuredReader::faces_
faceList faces_
2D cells (=faces)
Definition: vtkUnstructuredReader.H:157
Foam::vtkUnstructuredReader::lineMap_
labelList lineMap_
Definition: vtkUnstructuredReader.H:165
Foam::vtkUnstructuredReader::title_
string title_
Title.
Definition: vtkUnstructuredReader.H:139
Foam::vtkUnstructuredReader::cellData
objectRegistry & cellData()
Definition: vtkUnstructuredReader.H:325
Foam::vtkUnstructuredReader::pointData_
objectRegistry pointData_
Point based fields.
Definition: vtkUnstructuredReader.H:174
Foam::vtkUnstructuredReader::otherData
objectRegistry & otherData()
Definition: vtkUnstructuredReader.H:347
Foam::vtkUnstructuredReader::VTK_PIXEL
@ VTK_PIXEL
Definition: vtkUnstructuredReader.H:121
Foam::List< cellShape >
Foam::vtkUnstructuredReader::dataType_
string dataType_
DataType.
Definition: vtkUnstructuredReader.H:142
Foam::vtkUnstructuredReader::faceMap
const labelList & faceMap() const
Definition: vtkUnstructuredReader.H:298
Foam::vtkUnstructuredReader::readBlock
void readBlock(Istream &inFile, const label n, List< T > &lst) const
Definition: vtkUnstructuredReaderTemplates.C:37
Foam::vtkUnstructuredReader::VTK_QUAD
@ VTK_QUAD
Definition: vtkUnstructuredReader.H:122
Foam::vtkUnstructuredReader::NOMODE
@ NOMODE
Definition: vtkUnstructuredReader.H:100
Foam::vtkUnstructuredReader::VTK_ID
@ VTK_ID
Definition: vtkUnstructuredReader.H:79
Foam::vtkUnstructuredReader::VTK_LONG
@ VTK_LONG
Definition: vtkUnstructuredReader.H:74
Foam::type
fileName::Type type(const fileName &)
Return the file type: DIRECTORY or FILE.
Definition: POSIX.C:588
Foam::vtkUnstructuredReader::lines
const labelListList & lines() const
1D cells (=open lines)
Definition: vtkUnstructuredReader.H:304
Foam::vtkUnstructuredReader::POINT_DATA
@ POINT_DATA
Definition: vtkUnstructuredReader.H:104
Foam::vtkUnstructuredReader::vtkTypes
vtkTypes
Enumeration defining the cell types.
Definition: vtkUnstructuredReader.H:111
Foam::vtkUnstructuredReader::lines
labelListList & lines()
Definition: vtkUnstructuredReader.H:309
Foam::vtkUnstructuredReader::points
pointField & points()
Definition: vtkUnstructuredReader.H:266
Foam::vtkUnstructuredReader::CELL_DATA
@ CELL_DATA
Definition: vtkUnstructuredReader.H:103
Foam::vtkUnstructuredReader::selectRegistry
objectRegistry & selectRegistry(const parseMode readMode)
Definition: vtkUnstructuredReader.C:516
Foam::vtkUnstructuredReader::VTK_DOUBLE
@ VTK_DOUBLE
Definition: vtkUnstructuredReader.H:77
Foam::NamedEnum< vtkDataType, 8 >
Foam::vtkUnstructuredReader::parseMode
parseMode
Enumeration defining the parse mode - what type of data is being.
Definition: vtkUnstructuredReader.H:98
Foam::vtkUnstructuredReader::cells
const cellShapeList & cells() const
3D cells.
Definition: vtkUnstructuredReader.H:272