VTK  9.0.3
vtkGenericEnSightReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGenericEnSightReader.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 =========================================================================*/
23 #ifndef vtkGenericEnSightReader_h
24 #define vtkGenericEnSightReader_h
25 
26 #include "vtkIOEnSightModule.h" // For export macro
28 
29 class vtkCallbackCommand;
33 
34 class TranslationTableType;
35 
36 // Cell/Point Ids store mode:
37 // Sparse Mode is supposed to be for a large number of distributed processes (Unstructured)
38 // Non Sparse Mode is supposed to be for a small number of distributed processes (Unstructured)
39 // Implicit Mode is for Structured Data
41 {
46 };
47 
48 class VTKIOENSIGHT_EXPORT vtkGenericEnSightReader : public vtkMultiBlockDataSetAlgorithm
49 {
50 public:
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
56 
59  void SetCaseFileName(const char* fileName);
60  vtkGetStringMacro(CaseFileName);
62 
64 
67  vtkSetStringMacro(FilePath);
68  vtkGetStringMacro(FilePath);
70 
72 
75  vtkGetMacro(EnSightVersion, int);
77 
79 
82  vtkGetMacro(NumberOfVariables, int);
83  vtkGetMacro(NumberOfComplexVariables, int);
85 
87 
90  int GetNumberOfVariables(int type); // returns -1 if unknown type specified
91  vtkGetMacro(NumberOfScalarsPerNode, int);
92  vtkGetMacro(NumberOfVectorsPerNode, int);
93  vtkGetMacro(NumberOfTensorsSymmPerNode, int);
94  vtkGetMacro(NumberOfScalarsPerElement, int);
95  vtkGetMacro(NumberOfVectorsPerElement, int);
96  vtkGetMacro(NumberOfTensorsSymmPerElement, int);
97  vtkGetMacro(NumberOfScalarsPerMeasuredNode, int);
98  vtkGetMacro(NumberOfVectorsPerMeasuredNode, int);
99  vtkGetMacro(NumberOfComplexScalarsPerNode, int);
100  vtkGetMacro(NumberOfComplexVectorsPerNode, int);
101  vtkGetMacro(NumberOfComplexScalarsPerElement, int);
102  vtkGetMacro(NumberOfComplexVectorsPerElement, int);
104 
108  const char* GetDescription(int n);
109 
113  const char* GetComplexDescription(int n);
114 
125  const char* GetDescription(int n, int type);
126 
128 
131  int GetVariableType(int n);
134 
136 
139  virtual void SetTimeValue(float value);
140  vtkGetMacro(TimeValue, float);
142 
144 
147  vtkGetMacro(MinimumTimeValue, float);
148  vtkGetMacro(MaximumTimeValue, float);
150 
152 
155  vtkGetObjectMacro(TimeSets, vtkDataArrayCollection);
157 
164  int DetermineEnSightVersion(int quiet = 0);
165 
167 
170  vtkBooleanMacro(ReadAllVariables, vtkTypeBool);
171  vtkSetMacro(ReadAllVariables, vtkTypeBool);
172  vtkGetMacro(ReadAllVariables, vtkTypeBool);
174 
176 
180  vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
181  vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
183 
185 
191 
193 
197  const char* GetPointArrayName(int index);
198  const char* GetCellArrayName(int index);
200 
202 
206  int GetPointArrayStatus(const char* name);
207  int GetCellArrayStatus(const char* name);
208  void SetPointArrayStatus(const char* name, int status);
209  void SetCellArrayStatus(const char* name, int status);
211 
213  {
214  ENSIGHT_6 = 0,
215  ENSIGHT_6_BINARY = 1,
216  ENSIGHT_GOLD = 2,
217  ENSIGHT_GOLD_BINARY = 3,
218  ENSIGHT_MASTER_SERVER = 4
219  };
220 
222 
230  vtkSetMacro(ByteOrder, int);
231  vtkGetMacro(ByteOrder, int);
232  const char* GetByteOrderAsString();
234 
235  enum
236  {
237  FILE_BIG_ENDIAN = 0,
238  FILE_LITTLE_ENDIAN = 1,
239  FILE_UNKNOWN_ENDIAN = 2
240  };
241 
243 
247  vtkGetStringMacro(GeometryFileName);
249 
251 
263  vtkSetMacro(ParticleCoordinatesByIndex, vtkTypeBool);
264  vtkGetMacro(ParticleCoordinatesByIndex, vtkTypeBool);
265  vtkBooleanMacro(ParticleCoordinatesByIndex, vtkTypeBool);
267 
272  static bool IsEnSightFile(const char* casefilename);
273 
277  virtual int CanReadFile(const char* casefilename);
278 
279  // THIB
280  vtkGenericEnSightReader* GetReader() { return this->Reader; }
281 
282 protected:
285 
289 
295  virtual void ClearForNewCaseFileName();
296 
301  int ReadLine(char result[256]);
302 
307  int ReadBinaryLine(char result[80]);
308 
309  // Internal function that skips blank lines and reads the 1st
310  // non-blank line it finds (up to 256 characters).
311  // Returns 0 is there was an error.
312  int ReadNextDataLine(char result[256]);
313 
315 
318  vtkSetStringMacro(GeometryFileName);
320 
322 
328 
330 
333  void AddVariableType(int variableType);
334  void AddComplexVariableType(int variableType);
336 
338 
342  int ReplaceWildcards(char* fileName, int timeSet, int fileSet);
343  void ReplaceWildcardsHelper(char* fileName, int num);
345 
346  // Callback registered with the SelectionObserver.
348  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
350 
351  // Utility to create argument for vtkDataArraySelection::SetArrays.
352  char** CreateStringArray(int numStrings);
353  void DestroyStringArray(int numStrings, char** strings);
354 
355  // Fill the vtkDataArraySelection objects with the current set of
356  // EnSight variables.
358 
359  // Fill the vtkDataArraySelection objects with the current set of
360  // arrays in the internal EnSight reader.
362 
363  // Fill the internal EnSight reader's vtkDataArraySelection objects
364  // from those in this object.
366 
367  istream* IS;
368  FILE* IFile;
370 
373  char* FilePath;
374 
375  // array of types (one entry per instance of variable type in case file)
378 
379  // pointers to lists of descriptions
382 
385 
386  // number of file names / descriptions per type
399 
400  float TimeValue;
403 
404  // Flag for whether TimeValue has been set.
406 
409 
411 
414 
415  // The EnSight file version being read. Valid after
416  // UpdateInformation. Value is -1 for unknown version.
418 
419  // The array selections. These map over the variables and complex
420  // variables to hide the details of EnSight behind VTK terminology.
423 
424  // The observer to modify this object when the array selections are
425  // modified.
427 
428  // Whether the SelectionModified callback should invoke Modified.
429  // This is used when we are copying to/from the internal reader.
431 
432  // Insert a partId and return the 'realId' that should be used.
433  int InsertNewPartId(int partId);
434 
435  // Wrapper around an stl map
436  TranslationTableType* TranslationTable;
437 
438 private:
440  void operator=(const vtkGenericEnSightReader&) = delete;
441 };
442 
443 #endif
supports function callbacks
maintain an ordered list of dataarray objects
Store on/off settings for data arrays for a vtkSource.
class to read any type of EnSight files
vtkDataArraySelection * PointDataArraySelection
int ReadNextDataLine(char result[256])
int InsertNewPartId(int partId)
virtual void SetTimeSets(vtkDataArrayCollection *)
void SetReaderDataArraySelectionSetsFromSelf()
const char * GetComplexDescription(int n)
Get the nth description for a complex variable.
vtkGenericEnSightReader * Reader
void SetCellArrayStatus(const char *name, int status)
int DetermineEnSightVersion(int quiet=0)
Reads the FORMAT part of the case file to determine whether this is an EnSight6 or EnSightGold data s...
const char * GetByteOrderAsString()
int GetNumberOfVariables(int type)
Get the number of variables of a particular type.
void ReplaceWildcardsHelper(char *fileName, int num)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void DestroyStringArray(int numStrings, char **strings)
void AddComplexVariableType(int variableType)
vtkDataArrayCollection * TimeSets
virtual void SetTimeValue(float value)
Set/Get the time value at which to get the value.
const char * GetDescription(int n)
Get the nth description for a non-complex variable.
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
static bool IsEnSightFile(const char *casefilename)
Returns true if the file pointed to by casefilename appears to be a valid EnSight case file.
~vtkGenericEnSightReader() override
int ReplaceWildcards(char *fileName, int timeSet, int fileSet)
Replace the wildcards in the geometry file name with appropriate filename numbers as specified in the...
char ** CreateStringArray(int numStrings)
int GetComplexVariableType(int n)
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
virtual void ClearForNewCaseFileName()
Clear data structures such that setting a new case file name works.
const char * GetPointArrayName(int index)
Get the name of the point or cell array with the given index in the input.
static vtkGenericEnSightReader * New()
virtual int CanReadFile(const char *casefilename)
Returns IsEnSightFile() by default, but can be overridden.
int GetPointArrayStatus(const char *name)
Get/Set whether the point or cell array with the given name is to be read.
int GetCellArrayStatus(const char *name)
int ReadBinaryLine(char result[80])
Internal function to read up to 80 characters from a binary file.
int GetVariableType(int n)
Get the variable type of variable n.
void SetCaseFileName(const char *fileName)
Set/Get the Case file name.
const char * GetCellArrayName(int index)
vtkGenericEnSightReader * GetReader()
const char * GetDescription(int n, int type)
Get the nth description of a particular variable type.
void SetDataArraySelectionSetsFromReader()
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
void AddComplexVariableDescription(const char *description)
void SetPointArrayStatus(const char *name, int status)
void AddVariableDescription(const char *description)
Add a variable description to the appropriate array.
TranslationTableType * TranslationTable
void AddVariableType(int variableType)
Add a variable type to the appropriate array.
vtkCallbackCommand * SelectionObserver
int ReadLine(char result[256])
Internal function to read in a line up to 256 characters.
void SetDataArraySelectionSetsFromVariables()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkDataArraySelection * CellDataArraySelection
int GetNumberOfPointArrays()
Get the number of point or cell arrays available in the input.
void SetByteOrderToBigEndian()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
maintain an ordered list of IdList objects
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
abstract base class for most VTK objects
Definition: vtkObject.h:54
@ info
Definition: vtkX3D.h:382
@ value
Definition: vtkX3D.h:226
@ port
Definition: vtkX3D.h:453
@ type
Definition: vtkX3D.h:522
@ description
Definition: vtkX3D.h:328
@ name
Definition: vtkX3D.h:225
@ index
Definition: vtkX3D.h:252
int vtkTypeBool
Definition: vtkABI.h:69
EnsightReaderCellIdMode
@ SINGLE_PROCESS_MODE
@ IMPLICIT_STRUCTURED_MODE
@ NON_SPARSE_MODE