VTK  9.2.6
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=========================================================================*/
43#ifndef vtkEnSightGoldBinaryReader_h
44#define vtkEnSightGoldBinaryReader_h
45
46#include "vtkEnSightReader.h"
47#include "vtkIOEnSightModule.h" // For export macro
48
50
51class VTKIOENSIGHT_EXPORT vtkEnSightGoldBinaryReader : public vtkEnSightReader
52{
53public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
58protected:
61
62 // Returns 1 if successful. Sets file size as a side action.
63 int OpenFile(const char* filename);
64
65 // Returns 1 if successful. Handles constructing the filename, opening the file and checking
66 // if it's binary
67 int InitializeFile(const char* filename);
68
72 int ReadGeometryFile(const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
73
79 const char* fileName, int timeStep, vtkMultiBlockDataSet* output) override;
80
86 int ReadScalarsPerNode(const char* fileName, const char* description, int timeStep,
87 vtkMultiBlockDataSet* output, int measured = 0, int numberOfComponents = 1,
88 int component = 0) override;
89
94 int ReadVectorsPerNode(const char* fileName, const char* description, int timeStep,
95 vtkMultiBlockDataSet* output, int measured = 0) override;
96
101 int ReadAsymmetricTensorsPerNode(const char* fileName, const char* description, int timeStep,
102 vtkMultiBlockDataSet* output) override;
103
108 int ReadTensorsPerNode(const char* fileName, const char* description, int timeStep,
109 vtkMultiBlockDataSet* output) override;
110
116 int ReadScalarsPerElement(const char* fileName, const char* description, int timeStep,
117 vtkMultiBlockDataSet* output, int numberOfComponents = 1, int component = 0) override;
118
123 int ReadVectorsPerElement(const char* fileName, const char* description, int timeStep,
124 vtkMultiBlockDataSet* output) override;
125
130 int ReadAsymmetricTensorsPerElement(const char* fileName, const char* description, int timeStep,
131 vtkMultiBlockDataSet* output) override;
132
137 int ReadTensorsPerElement(const char* fileName, const char* description, int timeStep,
138 vtkMultiBlockDataSet* output) override;
139
146 int partId, char line[80], const char* name, vtkMultiBlockDataSet* output) override;
147
153 int partId, char line[256], const char* name, vtkMultiBlockDataSet* output) override;
154
160 int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
161
167 int partId, char line[80], const char* name, vtkMultiBlockDataSet* output);
168
173 int ReadLine(char result[80]);
174
176
180 int ReadInt(int* result);
181 int ReadPartId(int* result);
183
188 int ReadFloat(float* result);
189
194 int ReadIntArray(int* result, int numInts);
195
200 int ReadLong(vtkTypeInt64* result);
201
206 int ReadFloatArray(float* result, int numFloats);
207
215
217
221 int SkipStructuredGrid(char line[256]);
222 int SkipUnstructuredGrid(char line[256]);
223 int SkipRectilinearGrid(char line[256]);
224 int SkipImageData(char line[256]);
226
230 int SeekToCachedTimeStep(const char* fileName, int realTimeStep);
231
235 void AddTimeStepToCache(const char* fileName, int realTimeStep, vtkTypeInt64 address);
236
240 void AddFileIndexToCache(const char* fileName);
241
245 int FortranSkipBytes; // Number of bytes to skip when seeking within a fortran-written file
246
247 istream* GoldIFile;
248 // The size of the file could be used to choose byte order.
249 vtkTypeUInt64 FileSize;
250
251 class FileOffsetMapInternal;
252 FileOffsetMapInternal* FileOffsets;
253
254private:
255 int SizeOfInt;
257 void operator=(const vtkEnSightGoldBinaryReader&) = delete;
258
263 bool OpenVariableFile(const char* fname, const char* variableType);
264
269 bool SkipToTimeStep(const char* fileName, int timeStep, vtkMultiBlockDataSet* compositeOutput,
270 int attributeType, int numComponents, bool measured);
271
275 bool ReadMeasureVariableArray(
276 const char* description, vtkMultiBlockDataSet* compositeOutput, int numComponents);
277
278 bool ReadVariableArray(const char* description, vtkMultiBlockDataSet* compositeOutput,
279 int attributeType, int numComponents, int component = -1);
280
281 class vtkUtilities;
282 friend class vtkUtilities;
283};
284
285#endif
class to read binary EnSight Gold files
int SkipStructuredGrid(char line[256])
Read to the next time step in the geometry file.
void AddTimeStepToCache(const char *fileName, int realTimeStep, vtkTypeInt64 address)
Add an entry the time step cache.
int InitializeFile(const char *filename)
int ReadVectorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int measured=0) override
Read vectors per node for this dataset.
int CountTimeSteps()
Counts the number of timesteps in the geometry file This function assumes the file is already open an...
int ReadFloat(float *result)
Internal function to read a single float.
void AddFileIndexToCache(const char *fileName)
Read the file index, if available, and add it to the time step cache.
int ReadMeasuredGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output) override
Read the measured geometry file.
int SeekToCachedTimeStep(const char *fileName, int realTimeStep)
Seeks the IFile to the nearest time step that is <= the target time step.
int ReadInt(int *result)
Internal function to read in a single integer.
int ReadScalarsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int numberOfComponents=1, int component=0) override
Read scalars per element for this dataset.
int CreateRectilinearGridOutput(int partId, char line[256], const char *name, vtkMultiBlockDataSet *output)
Read a structured part from the geometry file and create a vtkRectilinearGrid output.
int ReadPartId(int *result)
Internal function to read in a single integer.
~vtkEnSightGoldBinaryReader() override
int ReadLine(char result[80])
Internal function to read in a line up to 80 characters.
int CreateStructuredGridOutput(int partId, char line[256], const char *name, vtkMultiBlockDataSet *output) override
Read a structured part from the geometry file and create a vtkStructuredGrid output.
int ReadAsymmetricTensorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output) override
Read asymmetric tensors per node for this dataset.
int ReadGeometryFile(const char *fileName, int timeStep, vtkMultiBlockDataSet *output) override
Read the geometry file.
int SkipTimeStep()
Read to the next time step in the geometry file.
int CreateUnstructuredGridOutput(int partId, char line[80], const char *name, vtkMultiBlockDataSet *output) override
Read an unstructured part (partId) from the geometry file and create a vtkUnstructuredGrid output.
int SkipRectilinearGrid(char line[256])
Read to the next time step in the geometry file.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int ReadScalarsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output, int measured=0, int numberOfComponents=1, int component=0) override
Read scalars per node for this dataset.
int ReadTensorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output) override
Read tensors per node for this dataset.
int CreateImageDataOutput(int partId, char line[80], const char *name, vtkMultiBlockDataSet *output)
Read a structured part from the geometry file and create a vtkImageData output.
int SkipUnstructuredGrid(char line[256])
Read to the next time step in the geometry file.
int ReadFloatArray(float *result, int numFloats)
Internal function to read in a float array.
int ReadTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output) override
Read tensors per element for this dataset.
int ReadIntArray(int *result, int numInts)
Internal function to read in an integer array.
static vtkEnSightGoldBinaryReader * New()
int OpenFile(const char *filename)
int ReadVectorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output) override
Read vectors per element for this dataset.
int ReadAsymmetricTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output) override
Read asymmetric tensors per element for this dataset.
int SkipImageData(char line[256])
Read to the next time step in the geometry file.
int ReadLong(vtkTypeInt64 *result)
Internal function to read in a single long.
superclass for EnSight file readers
a simple class to control print indentation
Definition: vtkIndent.h:40
Composite dataset that organizes datasets into blocks.