vtkPEnSightGoldBinaryReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPEnSightGoldBinaryReader.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  =========================================================================*/
32 #ifndef vtkPEnSightGoldBinaryReader_h
33 #define vtkPEnSightGoldBinaryReader_h
34 
35 #include "vtkPEnSightReader.h"
36 #include "vtkPVVTKExtensionsIOEnSightModule.h" //needed for exports
37 
40 class vtkPoints;
41 
43 {
44 public:
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
49 protected:
51  ~vtkPEnSightGoldBinaryReader() override;
52 
53  // Returns 1 if successful. Sets file size as a side action.
54  int OpenFile(const char* filename);
55 
56  // Returns 1 if successful. Handles constructing the filename, opening the file and checking
57  // if it's binary
58  int InitializeFile(const char* filename);
59 
63  int ReadGeometryFile(const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
64 
70  const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
71 
77  int ReadScalarsPerNode(const char* fileName, const char* description, int timeStep,
78  vtkMultiBlockDataSet* output, int measured = 0, int numberOfComponents = 1,
79  int component = 0) override;
80 
85  int ReadVectorsPerNode(const char* fileName, const char* description, int timeStep,
86  vtkMultiBlockDataSet* output, int measured = 0) override;
87 
92  int ReadTensorsPerNode(const char* fileName, const char* description, int timeStep,
93  vtkMultiBlockDataSet* output) override;
94 
100  int ReadScalarsPerElement(const char* fileName, const char* description, int timeStep,
101  vtkMultiBlockDataSet* output, int numberOfComponents = 1, int component = 0) override;
102 
107  int ReadVectorsPerElement(const char* fileName, const char* description, int timeStep,
108  vtkMultiBlockDataSet* output) override;
109 
114  int ReadTensorsPerElement(const char* fileName, const char* description, int timeStep,
115  vtkMultiBlockDataSet* output) override;
116 
123  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output) override;
124 
130  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output) override;
131 
136  int CreateRectilinearGridOutput(
137  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
138 
143  int CreateImageDataOutput(
144  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output);
145 
150  int ReadLine(char result[80]);
151 
153 
157  int ReadInt(int* result);
158  int ReadPartId(int* result);
160 
165  int ReadIntArray(int* result, int numInts);
166 
171  int ReadFloatArray(float* result, int numFloats);
172 
176  int ReadOrSkipCoordinates(vtkPoints* points, long offset, int partId, bool skip);
177 
182  int InjectCoordinatesAtEnd(vtkUnstructuredGrid* output, long coordinatesOffset, int partId);
183 
190  int CountTimeSteps();
191 
193 
196  int SkipTimeStep();
197  int SkipStructuredGrid(char line[256]);
198  int SkipUnstructuredGrid(char line[256]);
199  int SkipRectilinearGrid(char line[256]);
200  int SkipImageData(char line[256]);
202 
205  int Fortran;
206 
207  istream* IFile;
208  // The size of the file could be used to choose byte order.
209  long FileSize;
210 
211  // Float Vector Buffer utils
212  void GetVectorFromFloatBuffer(vtkIdType i, float* vector);
213  void UpdateFloatBuffer();
214  // The buffer
215  float** FloatBuffer;
216  // The buffer size. Default is 1000
218  // The FloatBuffer store the vectors
219  // from FloatBufferIndexBegin to FloatBufferIndexBegin + FloatBufferSize
221  // X variable positions of vector number 0 in file
223  // Total number of vectors;
225 
226 private:
228  void operator=(const vtkPEnSightGoldBinaryReader&) = delete;
229 };
230 
231 #endif
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.
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.
Parallel vtkEnSightGoldBinaryReader.
Superclass for EnSight file parallel readers.
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 vtkIdType
virtual int ReadMeasuredGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output)=0
Read the measured geometry file.
virtual int ReadVectorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read vectors per element for this dataset.
static vtkPGenericEnSightReader * New()
virtual int ReadTensorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read tensors per node for this dataset.
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 ReadVectorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int measured=0)=0
Read vectors per node for this dataset.
void PrintSelf(ostream &os, vtkIndent indent) override
virtual int ReadGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output)=0
Read the geometry file.
int ReadLine(char result[256])
#define VTKPVVTKEXTENSIONSIOENSIGHT_EXPORT
virtual int ReadTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read tensors per element for this dataset.