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 
51 class VTKIOENSIGHT_EXPORT vtkEnSightGoldBinaryReader : public vtkEnSightReader
52 {
53 public:
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
58 protected:
60  ~vtkEnSightGoldBinaryReader() override;
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 
159  int CreateRectilinearGridOutput(
160  int partId, char line[256], const char* name, vtkMultiBlockDataSet* output);
161 
166  int CreateImageDataOutput(
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 
214  int CountTimeSteps();
215 
217 
220  int SkipTimeStep();
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 
244  int Fortran;
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 
254 private:
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
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 ReadAsymmetricTensorsPerElement(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read asymmetric tensors per element for this dataset.
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:39
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()
virtual int ReadAsymmetricTensorsPerNode(const char *fileName, const char *description, int timeStep, vtkMultiBlockDataSet *output)=0
Read asymmetric tensors per node for this dataset.
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.