VTK  9.1.0
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(VTK_FILEPATH const char* fileName);
60  vtkGetFilePathMacro(CaseFileName);
62 
64 
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(NumberOfTensorsAsymPerNode, int);
94  vtkGetMacro(NumberOfTensorsSymmPerNode, int);
95  vtkGetMacro(NumberOfScalarsPerElement, int);
96  vtkGetMacro(NumberOfVectorsPerElement, int);
97  vtkGetMacro(NumberOfTensorsAsymPerElement, int);
98  vtkGetMacro(NumberOfTensorsSymmPerElement, int);
99  vtkGetMacro(NumberOfScalarsPerMeasuredNode, int);
100  vtkGetMacro(NumberOfVectorsPerMeasuredNode, int);
101  vtkGetMacro(NumberOfComplexScalarsPerNode, int);
102  vtkGetMacro(NumberOfComplexVectorsPerNode, int);
103  vtkGetMacro(NumberOfComplexScalarsPerElement, int);
104  vtkGetMacro(NumberOfComplexVectorsPerElement, int);
106 
110  const char* GetDescription(int n);
111 
115  const char* GetComplexDescription(int n);
116 
128  const char* GetDescription(int n, int type);
129 
131 
134  int GetVariableType(int n);
137 
139 
142  virtual void SetTimeValue(float value);
143  vtkGetMacro(TimeValue, float);
145 
147 
150  vtkGetMacro(MinimumTimeValue, float);
151  vtkGetMacro(MaximumTimeValue, float);
153 
155 
158  vtkGetObjectMacro(TimeSets, vtkDataArrayCollection);
160 
167  int DetermineEnSightVersion(int quiet = 0);
168 
170 
173  vtkBooleanMacro(ReadAllVariables, vtkTypeBool);
174  vtkSetMacro(ReadAllVariables, vtkTypeBool);
175  vtkGetMacro(ReadAllVariables, vtkTypeBool);
177 
179 
183  vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
184  vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
186 
188 
194 
196 
200  const char* GetPointArrayName(int index);
201  const char* GetCellArrayName(int index);
203 
205 
209  int GetPointArrayStatus(const char* name);
210  int GetCellArrayStatus(const char* name);
211  void SetPointArrayStatus(const char* name, int status);
212  void SetCellArrayStatus(const char* name, int status);
214 
216  {
217  ENSIGHT_6 = 0,
218  ENSIGHT_6_BINARY = 1,
219  ENSIGHT_GOLD = 2,
220  ENSIGHT_GOLD_BINARY = 3,
221  ENSIGHT_MASTER_SERVER = 4
222  };
223 
225 
233  vtkSetMacro(ByteOrder, int);
234  vtkGetMacro(ByteOrder, int);
235  const char* GetByteOrderAsString();
237 
238  enum
239  {
240  FILE_BIG_ENDIAN = 0,
241  FILE_LITTLE_ENDIAN = 1,
242  FILE_UNKNOWN_ENDIAN = 2
243  };
244 
246 
250  vtkGetFilePathMacro(GeometryFileName);
252 
254 
266  vtkSetMacro(ParticleCoordinatesByIndex, vtkTypeBool);
267  vtkGetMacro(ParticleCoordinatesByIndex, vtkTypeBool);
268  vtkBooleanMacro(ParticleCoordinatesByIndex, vtkTypeBool);
270 
275  static bool IsEnSightFile(VTK_FILEPATH const char* casefilename);
276 
280  virtual int CanReadFile(VTK_FILEPATH const char* casefilename);
281 
282  // THIB
283  vtkGenericEnSightReader* GetReader() { return this->Reader; }
284 
285 protected:
288 
292 
298  virtual void ClearForNewCaseFileName();
299 
304  int ReadLine(char result[256]);
305 
310  int ReadBinaryLine(char result[80]);
311 
315  bool SkipDataLine(char line[256]);
316 
317  // Internal function that skips blank lines and reads the 1st
318  // non-blank line it finds (up to 256 characters).
319  // Returns 0 is there was an error.
320  int ReadNextDataLine(char result[256]);
321 
323 
326  vtkSetFilePathMacro(GeometryFileName);
328 
330 
336 
338 
341  void AddVariableType(int variableType);
342  void AddComplexVariableType(int variableType);
344 
349  int ReplaceWildcards(char* fileName, int timeSet, int fileSet);
350 
354  static void ReplaceWildcardsHelper(char* fileName, int num);
355 
356  // Callback registered with the SelectionObserver.
358  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
360 
361  // Utility to create argument for vtkDataArraySelection::SetArrays.
362  char** CreateStringArray(int numStrings);
363  void DestroyStringArray(int numStrings, char** strings);
364 
365  // Fill the vtkDataArraySelection objects with the current set of
366  // EnSight variables.
368 
369  // Fill the vtkDataArraySelection objects with the current set of
370  // arrays in the internal EnSight reader.
372 
373  // Fill the internal EnSight reader's vtkDataArraySelection objects
374  // from those in this object.
376 
377  istream* IS;
378  FILE* IFile;
380 
383  char* FilePath;
384 
385  // array of types (one entry per instance of variable type in case file)
388 
389  // pointers to lists of descriptions
392 
395 
396  // number of file names / descriptions per type
411 
412  float TimeValue;
415 
416  // Flag for whether TimeValue has been set.
418 
421 
423 
426 
427  // The EnSight file version being read. Valid after
428  // UpdateInformation. Value is -1 for unknown version.
430 
431  // The array selections. These map over the variables and complex
432  // variables to hide the details of EnSight behind VTK terminology.
435 
436  // The observer to modify this object when the array selections are
437  // modified.
439 
440  // Whether the SelectionModified callback should invoke Modified.
441  // This is used when we are copying to/from the internal reader.
443 
444  // Insert a partId and return the 'realId' that should be used.
445  int InsertNewPartId(int partId);
446 
447  // Wrapper around an stl map
448  TranslationTableType* TranslationTable;
449 
450 private:
452  void operator=(const vtkGenericEnSightReader&) = delete;
453 };
454 
455 #endif
SINGLE_PROCESS_MODE
@ SINGLE_PROCESS_MODE
Definition: vtkGenericEnSightReader.h:42
vtkGenericEnSightReader::MaximumTimeValue
float MaximumTimeValue
Definition: vtkGenericEnSightReader.h:414
vtkGenericEnSightReader::TimeValue
float TimeValue
Definition: vtkGenericEnSightReader.h:412
vtkGenericEnSightReader::ReadLine
int ReadLine(char result[256])
Internal function to read in a line up to 256 characters.
vtkGenericEnSightReader::GetNumberOfPointArrays
int GetNumberOfPointArrays()
Get the number of point or cell arrays available in the input.
vtkGenericEnSightReader::NumberOfVectorsPerNode
int NumberOfVectorsPerNode
Definition: vtkGenericEnSightReader.h:398
vtkGenericEnSightReader::AddVariableType
void AddVariableType(int variableType)
Add a variable type to the appropriate array.
vtkGenericEnSightReader::GetNumberOfVariables
int GetNumberOfVariables(int type)
Get the number of variables of a particular type.
vtkGenericEnSightReader::GetVariableType
int GetVariableType(int n)
Get the variable type of variable n.
vtkGenericEnSightReader::GetPointArrayName
const char * GetPointArrayName(int index)
Get the name of the point or cell array with the given index in the input.
vtkGenericEnSightReader::SetTimeValue
virtual void SetTimeValue(float value)
Set/Get the time value at which to get the value.
vtkGenericEnSightReader::SetCaseFileName
void SetCaseFileName(VTK_FILEPATH const char *fileName)
Set/Get the Case file name.
vtkX3D::value
@ value
Definition: vtkX3D.h:226
VTK_FILEPATH
#define VTK_FILEPATH
Definition: vtkWrappingHints.h:46
vtkX3D::type
@ type
Definition: vtkX3D.h:522
vtkGenericEnSightReader::AddComplexVariableDescription
void AddComplexVariableDescription(const char *description)
Add a variable description to the appropriate array.
vtkGenericEnSightReader::ReplaceWildcardsHelper
static void ReplaceWildcardsHelper(char *fileName, int num)
Replace the *'s in the filename with the given filename number.
vtkGenericEnSightReader::NumberOfScalarsPerElement
int NumberOfScalarsPerElement
Definition: vtkGenericEnSightReader.h:401
vtkGenericEnSightReader::TimeSets
vtkDataArrayCollection * TimeSets
Definition: vtkGenericEnSightReader.h:419
vtkGenericEnSightReader::GeometryFileName
char * GeometryFileName
Definition: vtkGenericEnSightReader.h:382
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkGenericEnSightReader::MinimumTimeValue
float MinimumTimeValue
Definition: vtkGenericEnSightReader.h:413
vtkGenericEnSightReader::IsEnSightFile
static bool IsEnSightFile(VTK_FILEPATH const char *casefilename)
Returns true if the file pointed to by casefilename appears to be a valid EnSight case file.
vtkGenericEnSightReader::NumberOfTensorsSymmPerNode
int NumberOfTensorsSymmPerNode
Definition: vtkGenericEnSightReader.h:400
vtkDataArrayCollection
maintain an ordered list of dataarray objects
Definition: vtkDataArrayCollection.h:32
vtkGenericEnSightReader::TimeValueInitialized
int TimeValueInitialized
Definition: vtkGenericEnSightReader.h:417
vtkGenericEnSightReader::DestroyStringArray
void DestroyStringArray(int numStrings, char **strings)
IMPLICIT_STRUCTURED_MODE
@ IMPLICIT_STRUCTURED_MODE
Definition: vtkGenericEnSightReader.h:45
vtkGenericEnSightReader::SelectionObserver
vtkCallbackCommand * SelectionObserver
Definition: vtkGenericEnSightReader.h:438
vtkGenericEnSightReader::GetDescription
const char * GetDescription(int n)
Get the nth description for a non-complex variable.
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:82
vtkGenericEnSightReader::DetermineEnSightVersion
int DetermineEnSightVersion(int quiet=0)
Reads the FORMAT part of the case file to determine whether this is an EnSight6 or EnSightGold data s...
vtkGenericEnSightReader::NumberOfVectorsPerMeasuredNode
int NumberOfVectorsPerMeasuredNode
Definition: vtkGenericEnSightReader.h:406
vtkGenericEnSightReader::GetNumberOfCellArrays
int GetNumberOfCellArrays()
Get the number of point or cell arrays available in the input.
vtkGenericEnSightReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
Get/Set whether the point or cell array with the given name is to be read.
vtkGenericEnSightReader::RequestInformation
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkGenericEnSightReader::NumberOfScalarsPerMeasuredNode
int NumberOfScalarsPerMeasuredNode
Definition: vtkGenericEnSightReader.h:405
vtkGenericEnSightReader::CreateStringArray
char ** CreateStringArray(int numStrings)
vtkGenericEnSightReader::VariableTypes
int * VariableTypes
Definition: vtkGenericEnSightReader.h:386
vtkGenericEnSightReader::NumberOfTensorsSymmPerElement
int NumberOfTensorsSymmPerElement
Definition: vtkGenericEnSightReader.h:404
vtkGenericEnSightReader::SelectionModified
void SelectionModified()
vtkGenericEnSightReader::InsertNewPartId
int InsertNewPartId(int partId)
vtkGenericEnSightReader::IS
istream * IS
Definition: vtkGenericEnSightReader.h:377
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:35
vtkGenericEnSightReader::ComplexVariableTypes
int * ComplexVariableTypes
Definition: vtkGenericEnSightReader.h:387
vtkGenericEnSightReader::~vtkGenericEnSightReader
~vtkGenericEnSightReader() override
vtkGenericEnSightReader::NumberOfComplexVariables
int NumberOfComplexVariables
Definition: vtkGenericEnSightReader.h:394
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkGenericEnSightReader::FillOutputPortInformation
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
vtkGenericEnSightReader::NumberOfComplexScalarsPerElement
int NumberOfComplexScalarsPerElement
Definition: vtkGenericEnSightReader.h:409
vtkGenericEnSightReader::SetByteOrderToLittleEndian
void SetByteOrderToLittleEndian()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
vtkGenericEnSightReader::NumberOfScalarsPerNode
int NumberOfScalarsPerNode
Definition: vtkGenericEnSightReader.h:397
vtkGenericEnSightReader::FileTypes
FileTypes
Definition: vtkGenericEnSightReader.h:216
vtkGenericEnSightReader::NumberOfVectorsPerElement
int NumberOfVectorsPerElement
Definition: vtkGenericEnSightReader.h:402
vtkGenericEnSightReader::NumberOfTensorsAsymPerElement
int NumberOfTensorsAsymPerElement
Definition: vtkGenericEnSightReader.h:403
vtkGenericEnSightReader::SetReaderDataArraySelectionSetsFromSelf
void SetReaderDataArraySelectionSetsFromSelf()
vtkGenericEnSightReader::TranslationTable
TranslationTableType * TranslationTable
Definition: vtkGenericEnSightReader.h:448
vtkGenericEnSightReader::SelectionModifiedCallback
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
vtkGenericEnSightReader::SetPointArrayStatus
void SetPointArrayStatus(const char *name, int status)
Get/Set whether the point or cell array with the given name is to be read.
vtkGenericEnSightReader::vtkGetFilePathMacro
vtkGetFilePathMacro(FilePath)
Set/Get the file path.
vtkGenericEnSightReader::GetDescription
const char * GetDescription(int n, int type)
Get the nth description of a particular variable type.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkGenericEnSightReader
class to read any type of EnSight files
Definition: vtkGenericEnSightReader.h:49
vtkGenericEnSightReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkGenericEnSightReader.h:433
vtkGenericEnSightReader::ByteOrder
int ByteOrder
Definition: vtkGenericEnSightReader.h:424
vtkGenericEnSightReader::ComplexVariableDescriptions
char ** ComplexVariableDescriptions
Definition: vtkGenericEnSightReader.h:391
vtkMultiBlockDataSetAlgorithm.h
SPARSE_MODE
@ SPARSE_MODE
Definition: vtkGenericEnSightReader.h:43
vtkIdListCollection
maintain an ordered list of IdList objects
Definition: vtkIdListCollection.h:32
vtkGenericEnSightReader::ParticleCoordinatesByIndex
vtkTypeBool ParticleCoordinatesByIndex
Definition: vtkGenericEnSightReader.h:425
NON_SPARSE_MODE
@ NON_SPARSE_MODE
Definition: vtkGenericEnSightReader.h:44
vtkGenericEnSightReader::ClearForNewCaseFileName
virtual void ClearForNewCaseFileName()
Clear data structures such that setting a new case file name works.
vtkGenericEnSightReader::NumberOfComplexScalarsPerNode
int NumberOfComplexScalarsPerNode
Definition: vtkGenericEnSightReader.h:407
vtkGenericEnSightReader::Reader
vtkGenericEnSightReader * Reader
Definition: vtkGenericEnSightReader.h:379
vtkGenericEnSightReader::FilePath
char * FilePath
Definition: vtkGenericEnSightReader.h:383
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkGenericEnSightReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
Get/Set whether the point or cell array with the given name is to be read.
vtkGenericEnSightReader::vtkSetFilePathMacro
vtkSetFilePathMacro(GeometryFileName)
Set the geometry file name.
vtkGenericEnSightReader::NumberOfVariables
int NumberOfVariables
Definition: vtkGenericEnSightReader.h:393
vtkGenericEnSightReader::SelectionModifiedDoNotCallModified
int SelectionModifiedDoNotCallModified
Definition: vtkGenericEnSightReader.h:442
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkGenericEnSightReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkGenericEnSightReader.h:434
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkGenericEnSightReader::VariableDescriptions
char ** VariableDescriptions
Definition: vtkGenericEnSightReader.h:390
vtkGenericEnSightReader::GetCellArrayStatus
int GetCellArrayStatus(const char *name)
Get/Set whether the point or cell array with the given name is to be read.
vtkGenericEnSightReader::GetByteOrderAsString
const char * GetByteOrderAsString()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
vtkGenericEnSightReader::SetDataArraySelectionSetsFromVariables
void SetDataArraySelectionSetsFromVariables()
vtkX3D::description
@ description
Definition: vtkX3D.h:328
vtkGenericEnSightReader::SetByteOrderToBigEndian
void SetByteOrderToBigEndian()
Set the byte order of the file (remember, more Unix workstations write big endian whereas PCs write l...
vtkGenericEnSightReader::GetReader
vtkGenericEnSightReader * GetReader()
Definition: vtkGenericEnSightReader.h:283
vtkGenericEnSightReader::vtkGetFilePathMacro
vtkGetFilePathMacro(CaseFileName)
Set/Get the Case file name.
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:154
vtkGenericEnSightReader::SetDataArraySelectionSetsFromReader
void SetDataArraySelectionSetsFromReader()
vtkGenericEnSightReader::ReadNextDataLine
int ReadNextDataLine(char result[256])
vtkGenericEnSightReader::New
static vtkGenericEnSightReader * New()
vtkGenericEnSightReader::CaseFileName
char * CaseFileName
Definition: vtkGenericEnSightReader.h:381
vtkGenericEnSightReader::GetCellArrayName
const char * GetCellArrayName(int index)
Get the name of the point or cell array with the given index in the input.
vtkGenericEnSightReader::NumberOfTensorsAsymPerNode
int NumberOfTensorsAsymPerNode
Definition: vtkGenericEnSightReader.h:399
vtkGenericEnSightReader::SkipDataLine
bool SkipDataLine(char line[256])
Skip certain non-comment lines that are not needed.
vtkGenericEnSightReader::EnSightVersion
int EnSightVersion
Definition: vtkGenericEnSightReader.h:429
vtkGenericEnSightReader::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkGenericEnSightReader::GetComplexDescription
const char * GetComplexDescription(int n)
Get the nth description for a complex variable.
vtkGenericEnSightReader::CanReadFile
virtual int CanReadFile(VTK_FILEPATH const char *casefilename)
Returns IsEnSightFile() by default, but can be overridden.
vtkGenericEnSightReader::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkGenericEnSightReader::NumberOfComplexVectorsPerNode
int NumberOfComplexVectorsPerNode
Definition: vtkGenericEnSightReader.h:408
vtkGenericEnSightReader::ReadAllVariables
vtkTypeBool ReadAllVariables
Definition: vtkGenericEnSightReader.h:422
EnsightReaderCellIdMode
EnsightReaderCellIdMode
Definition: vtkGenericEnSightReader.h:41
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkGenericEnSightReader::vtkGetFilePathMacro
vtkGetFilePathMacro(GeometryFileName)
Get the Geometry file name.
vtkGenericEnSightReader::GetComplexVariableType
int GetComplexVariableType(int n)
Get the variable type of variable n.
vtkGenericEnSightReader::vtkGenericEnSightReader
vtkGenericEnSightReader()
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkGenericEnSightReader::SetTimeSets
virtual void SetTimeSets(vtkDataArrayCollection *)
vtkGenericEnSightReader::IFile
FILE * IFile
Definition: vtkGenericEnSightReader.h:378
vtkGenericEnSightReader::AddComplexVariableType
void AddComplexVariableType(int variableType)
Add a variable type to the appropriate array.
vtkGenericEnSightReader::ReadBinaryLine
int ReadBinaryLine(char result[80])
Internal function to read up to 80 characters from a binary file.
vtkGenericEnSightReader::AddVariableDescription
void AddVariableDescription(const char *description)
Add a variable description to the appropriate array.
vtkGenericEnSightReader::NumberOfComplexVectorsPerElement
int NumberOfComplexVectorsPerElement
Definition: vtkGenericEnSightReader.h:410
vtkGenericEnSightReader::vtkSetFilePathMacro
vtkSetFilePathMacro(FilePath)
Set/Get the file path.
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:33