ParaView
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  =========================================================================*/
37 #ifndef vtkPEnSightGoldBinaryReader_h
38 #define vtkPEnSightGoldBinaryReader_h
39 
40 #include "vtkPEnSightReader.h"
41 #include "vtkPVVTKExtensionsDefaultModule.h" //needed for exports
42 
43 class vtkMultiBlockDataSet;
44 class vtkUnstructuredGrid;
45 class vtkPoints;
46 
47 class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPEnSightGoldBinaryReader : public vtkPEnSightReader
48 {
49 public:
52  virtual void PrintSelf(ostream& os, vtkIndent indent);
53 
54 protected:
57 
58  // Returns 1 if successful. Sets file size as a side action.
59  int OpenFile(const char* filename);
60 
61  // Returns 1 if successful. Handles constructing the filename, opening the file and checking
62  // if it's binary
63  int InitializeFile(const char* filename);
64 
68  virtual int ReadGeometryFile(const char* fileName, int timeStep, vtkMultiBlockDataSet* output);
69 
74  virtual int ReadMeasuredGeometryFile(
75  const char* fileName, int timeStep, vtkMultiBlockDataSet* output);
76 
82  virtual int ReadScalarsPerNode(const char* fileName, const char* description, int timeStep,
83  vtkMultiBlockDataSet* output, int measured = 0, int numberOfComponents = 1, int component = 0);
84 
89  virtual int ReadVectorsPerNode(const char* fileName, const char* description, int timeStep,
90  vtkMultiBlockDataSet* output, int measured = 0);
91 
96  virtual int ReadTensorsPerNode(
97  const char* fileName, const char* description, int timeStep, vtkMultiBlockDataSet* output);
98 
104  virtual int ReadScalarsPerElement(const char* fileName, const char* description, int timeStep,
105  vtkMultiBlockDataSet* output, int numberOfComponents = 1, int component = 0);
106 
111  virtual int ReadVectorsPerElement(
112  const char* fileName, const char* description, int timeStep, vtkMultiBlockDataSet* output);
113 
118  virtual int ReadTensorsPerElement(
119  const char* fileName, const char* description, int timeStep, vtkMultiBlockDataSet* output);
120 
126  virtual int CreateUnstructuredGridOutput(
127  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output);
128 
133  virtual int CreateStructuredGridOutput(
134  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
135 
140  int CreateRectilinearGridOutput(
141  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
142 
147  int CreateImageDataOutput(
148  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output);
149 
154  int ReadLine(char result[80]);
155 
157 
161  int ReadInt(int* result);
162  int ReadPartId(int* result);
164 
169  int ReadIntArray(int* result, int numInts);
170 
175  int ReadFloatArray(float* result, int numFloats);
176 
180  int ReadOrSkipCoordinates(vtkPoints* points, long offset, int partId, bool skip);
181 
186  int InjectCoordinatesAtEnd(vtkUnstructuredGrid* output, long coordinatesOffset, int partId);
187 
194  int CountTimeSteps();
195 
197 
200  int SkipTimeStep();
201  int SkipStructuredGrid(char line[256]);
202  int SkipUnstructuredGrid(char line[256]);
203  int SkipRectilinearGrid(char line[256]);
204  int SkipImageData(char line[256]);
206 
209  int Fortran;
210 
211  ifstream* IFile;
212  // The size of the file could be used to choose byte order.
213  long FileSize;
214 
215  // Float Vector Buffer utils
216  void GetVectorFromFloatBuffer(int i, float* vector);
217  void UpdateFloatBuffer();
218  // The buffer
219  float** FloatBuffer;
220  // The buffer size. Default is 1000
222  // The FloatBuffer store the vectors
223  // from FloatBufferIndexBegin to FloatBufferIndexBegin + FloatBufferSize
225  // X variable positions of vector number 0 in file
227  // Total number of vectors;
229 
230 private:
231  vtkPEnSightGoldBinaryReader(const vtkPEnSightGoldBinaryReader&) VTK_DELETE_FUNCTION;
232  void operator=(const vtkPEnSightGoldBinaryReader&) VTK_DELETE_FUNCTION;
233 };
234 
235 #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.
void PrintSelf(ostream &os, vtkIndent indent)
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.
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.
virtual int ReadGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output)=0
Read the geometry file.
virtual int ReadTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read tensors per element for this dataset.