VTK
vtkEnSightGoldBinaryReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkEnSightGoldBinaryReader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
40 #ifndef vtkEnSightGoldBinaryReader_h
41 #define vtkEnSightGoldBinaryReader_h
42 
43 #include "vtkIOEnSightModule.h" // For export macro
44 #include "vtkEnSightReader.h"
45 
46 
48 
49 class VTKIOENSIGHT_EXPORT vtkEnSightGoldBinaryReader : public vtkEnSightReader
50 {
51 public:
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
56 protected:
58  ~vtkEnSightGoldBinaryReader() override;
59 
60  // Returns 1 if successful. Sets file size as a side action.
61  int OpenFile(const char* filename);
62 
63 
64  // Returns 1 if successful. Handles constructing the filename, opening the file and checking
65  // if it's binary
66  int InitializeFile(const char* filename);
67 
71  int ReadGeometryFile(const char* fileName, int timeStep,
72  vtkMultiBlockDataSet *output) override;
73 
78  int ReadMeasuredGeometryFile(const char* fileName, int timeStep,
79  vtkMultiBlockDataSet *output) override;
80 
86  int ReadScalarsPerNode(const char* fileName, const char* description,
87  int timeStep, vtkMultiBlockDataSet *output,
88  int measured = 0,
89  int numberOfComponents = 1,
90  int component = 0) override;
91 
96  int ReadVectorsPerNode(const char* fileName, const char* description,
97  int timeStep, vtkMultiBlockDataSet *output,
98  int measured = 0) override;
99 
104  int ReadTensorsPerNode(const char* fileName, const char* description,
105  int timeStep, vtkMultiBlockDataSet *output) override;
106 
112  int ReadScalarsPerElement(const char* fileName, const char* description,
113  int timeStep, vtkMultiBlockDataSet *output,
114  int numberOfComponents = 1,
115  int component = 0) override;
116 
121  int ReadVectorsPerElement(const char* fileName, const char* description,
122  int timeStep, vtkMultiBlockDataSet *output) override;
123 
128  int ReadTensorsPerElement(const char* fileName, const char* description,
129  int timeStep, vtkMultiBlockDataSet *output) override;
130 
136  int CreateUnstructuredGridOutput(int partId,
137  char line[80],
138  const char* name,
139  vtkMultiBlockDataSet *output) override;
140 
145  int CreateStructuredGridOutput(int partId,
146  char line[256],
147  const char* name,
148  vtkMultiBlockDataSet *output) override;
149 
154  int CreateRectilinearGridOutput(int partId, char line[256], const char* name,
155  vtkMultiBlockDataSet *output);
156 
161  int CreateImageDataOutput(int partId, char line[80], const char* name,
162  vtkMultiBlockDataSet *output);
163 
168  int ReadLine(char result[80]);
169 
171 
175  int ReadInt(int *result);
176  int ReadPartId(int *result);
178 
183  int ReadIntArray(int *result, int numInts);
184 
189  int ReadLong(vtkTypeInt64 *result);
190 
195  int ReadFloatArray(float *result, int numFloats);
196 
203  int CountTimeSteps();
204 
206 
209  int SkipTimeStep();
210  int SkipStructuredGrid(char line[256]);
211  int SkipUnstructuredGrid(char line[256]);
212  int SkipRectilinearGrid(char line[256]);
213  int SkipImageData(char line[256]);
215 
219  int SeekToCachedTimeStep(const char* fileName, int realTimeStep);
220 
224  void AddTimeStepToCache(const char* fileName, int realTimeStep, vtkTypeInt64 address);
225 
229  void AddFileIndexToCache(const char* fileName);
230 
233  int Fortran;
234 
235  ifstream *GoldIFile;
236  // The size of the file could be used to choose byte order.
237  vtkTypeUInt64 FileSize;
238 
239  class FileOffsetMapInternal;
240  FileOffsetMapInternal *FileOffsets;
241 
242 private:
243  int SizeOfInt;
245  void operator=(const vtkEnSightGoldBinaryReader&) = delete;
246 };
247 
248 #endif
virtual int CreateStructuredGridOutput(int partId, char line[80], const char *name, vtkMultiBlockDataSet *output)=0
Read a structured part from the geometry file and create a vtkStructuredGridOutput.
class to read binary EnSight Gold files
virtual int ReadVectorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int measured=0)=0
Read vectors per node for this dataset.
virtual int ReadMeasuredGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output)=0
Read the measured geometry file.
virtual int ReadTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read tensors per element for this dataset.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int ReadGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output)=0
Read the geometry file.
virtual int ReadTensorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read tensors per node for this dataset.
a simple class to control print indentation
Definition: vtkIndent.h:33
virtual int ReadScalarsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int numberOfComponents=1, int component=0)=0
Read scalars per element for this dataset.
superclass for EnSight file readers
static vtkGenericEnSightReader * New()
Composite dataset that organizes datasets into blocks.
virtual int CreateUnstructuredGridOutput(int partId, char line[80], const char *name, vtkMultiBlockDataSet *output)=0
Read an unstructured part (partId) from the geometry file and create a vtkUnstructuredGrid output.
virtual int ReadScalarsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int measured=0, int numberOfComponents=1, int component=0)=0
Read scalars per node for this dataset.
int ReadLine(char result[256])
Internal function to read in a line up to 256 characters.
virtual int ReadVectorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read vectors per element for this dataset.