vtkPEnSightGoldBinaryReader.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
3 // SPDX-FileCopyrightText: Copyright (c) CEA
4 // SPDX-License-Identifier: BSD-3-Clause
21 #ifndef vtkPEnSightGoldBinaryReader_h
22 #define vtkPEnSightGoldBinaryReader_h
23 
24 #include "vtkPEnSightReader.h"
25 #include "vtkPVVTKExtensionsIOEnSightModule.h" //needed for exports
26 
29 class vtkPoints;
30 
32 {
33 public:
36  void PrintSelf(ostream& os, vtkIndent indent) override;
37 
38 protected:
40  ~vtkPEnSightGoldBinaryReader() override;
41 
42  // Returns 1 if successful. Sets file size as a side action.
43  int OpenFile(const char* filename);
44 
45  // Returns 1 if successful. Handles constructing the filename, opening the file and checking
46  // if it's binary
47  int InitializeFile(const char* filename);
48 
52  int ReadGeometryFile(const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
53 
59  const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
60 
66  int ReadScalarsPerNode(const char* fileName, const char* description, int timeStep,
67  vtkMultiBlockDataSet* output, int measured = 0, int numberOfComponents = 1,
68  int component = 0) override;
69 
74  int ReadVectorsPerNode(const char* fileName, const char* description, int timeStep,
75  vtkMultiBlockDataSet* output, int measured = 0) override;
76 
81  int ReadTensorsPerNode(const char* fileName, const char* description, int timeStep,
82  vtkMultiBlockDataSet* output) override;
83 
89  int ReadScalarsPerElement(const char* fileName, const char* description, int timeStep,
90  vtkMultiBlockDataSet* output, int numberOfComponents = 1, int component = 0) override;
91 
96  int ReadVectorsPerElement(const char* fileName, const char* description, int timeStep,
97  vtkMultiBlockDataSet* output) override;
98 
103  int ReadTensorsPerElement(const char* fileName, const char* description, int timeStep,
104  vtkMultiBlockDataSet* output) override;
105 
112  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output) override;
113 
119  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output) override;
120 
125  int CreateRectilinearGridOutput(
126  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
127 
132  int CreateImageDataOutput(
133  int partId, char line[80], const char* name, vtkMultiBlockDataSet* output);
134 
139  int ReadLine(char result[80]);
140 
142 
146  int ReadInt(int* result);
147  int ReadPartId(int* result);
149 
154  int ReadIntArray(int* result, int numInts);
155 
160  int ReadFloatArray(float* result, int numFloats);
161 
165  int ReadOrSkipCoordinates(vtkPoints* points, long offset, int partId, bool skip);
166 
171  int InjectCoordinatesAtEnd(vtkUnstructuredGrid* output, long coordinatesOffset, int partId);
172 
179  int CountTimeSteps();
180 
182 
185  int SkipTimeStep();
186  int SkipStructuredGrid(char line[256]);
187  int SkipUnstructuredGrid(char line[256]);
188  int SkipRectilinearGrid(char line[256]);
189  int SkipImageData(char line[256]);
191 
194  int Fortran;
195 
196  istream* IFile;
197  // The size of the file could be used to choose byte order.
198  long FileSize;
199 
200  // Float Vector Buffer utils
201  void GetVectorFromFloatBuffer(vtkIdType i, float* vector);
202  void UpdateFloatBuffer();
203  // The buffer
204  float** FloatBuffer;
205  // The buffer size. Default is 1000
207  // The FloatBuffer store the vectors
208  // from FloatBufferIndexBegin to FloatBufferIndexBegin + FloatBufferSize
210  // X variable positions of vector number 0 in file
212  // Total number of vectors;
214 
215 private:
217  void operator=(const vtkPEnSightGoldBinaryReader&) = delete;
218 };
219 
220 #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.