VTK  9.0.1
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:
51  static vtkGenericEnSightReader* New();
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);
132  int GetComplexVariableType(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 
188  int GetNumberOfPointArrays();
189  int GetNumberOfCellArrays();
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 
228  void SetByteOrderToBigEndian();
229  void SetByteOrderToLittleEndian();
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:
284  ~vtkGenericEnSightReader() override;
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 
325  void AddVariableDescription(const char* description);
326  void AddComplexVariableDescription(const char* description);
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.
347  static void SelectionModifiedCallback(
348  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
349  void SelectionModified();
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.
357  void SetDataArraySelectionSetsFromVariables();
358 
359  // Fill the vtkDataArraySelection objects with the current set of
360  // arrays in the internal EnSight reader.
361  void SetDataArraySelectionSetsFromReader();
362 
363  // Fill the internal EnSight reader's vtkDataArraySelection objects
364  // from those in this object.
365  void SetReaderDataArraySelectionSetsFromSelf();
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 
408  virtual void SetTimeSets(vtkDataArrayCollection*);
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
SINGLE_PROCESS_MODE
@ SINGLE_PROCESS_MODE
Definition: vtkGenericEnSightReader.h:42
vtkGenericEnSightReader::MaximumTimeValue
float MaximumTimeValue
Definition: vtkGenericEnSightReader.h:402
vtkGenericEnSightReader::TimeValue
float TimeValue
Definition: vtkGenericEnSightReader.h:400
vtkGenericEnSightReader::NumberOfVectorsPerNode
int NumberOfVectorsPerNode
Definition: vtkGenericEnSightReader.h:388
vtkX3D::value
@ value
Definition: vtkX3D.h:226
vtkX3D::type
@ type
Definition: vtkX3D.h:522
vtkGenericEnSightReader::NumberOfScalarsPerElement
int NumberOfScalarsPerElement
Definition: vtkGenericEnSightReader.h:390
vtkGenericEnSightReader::TimeSets
vtkDataArrayCollection * TimeSets
Definition: vtkGenericEnSightReader.h:407
vtkGenericEnSightReader::GeometryFileName
char * GeometryFileName
Definition: vtkGenericEnSightReader.h:372
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkGenericEnSightReader::MinimumTimeValue
float MinimumTimeValue
Definition: vtkGenericEnSightReader.h:401
vtkGenericEnSightReader::NumberOfTensorsSymmPerNode
int NumberOfTensorsSymmPerNode
Definition: vtkGenericEnSightReader.h:389
vtkDataArrayCollection
maintain an ordered list of dataarray objects
Definition: vtkDataArrayCollection.h:31
vtkGenericEnSightReader::TimeValueInitialized
int TimeValueInitialized
Definition: vtkGenericEnSightReader.h:405
vtkMultiBlockDataSetAlgorithm::FillOutputPortInformation
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
IMPLICIT_STRUCTURED_MODE
@ IMPLICIT_STRUCTURED_MODE
Definition: vtkGenericEnSightReader.h:45
vtkGenericEnSightReader::SelectionObserver
vtkCallbackCommand * SelectionObserver
Definition: vtkGenericEnSightReader.h:426
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkMultiBlockDataSetAlgorithm::New
static vtkMultiBlockDataSetAlgorithm * New()
vtkGenericEnSightReader::NumberOfVectorsPerMeasuredNode
int NumberOfVectorsPerMeasuredNode
Definition: vtkGenericEnSightReader.h:394
vtkGenericEnSightReader::NumberOfScalarsPerMeasuredNode
int NumberOfScalarsPerMeasuredNode
Definition: vtkGenericEnSightReader.h:393
vtkGenericEnSightReader::VariableTypes
int * VariableTypes
Definition: vtkGenericEnSightReader.h:376
vtkGenericEnSightReader::NumberOfTensorsSymmPerElement
int NumberOfTensorsSymmPerElement
Definition: vtkGenericEnSightReader.h:392
vtkGenericEnSightReader::IS
istream * IS
Definition: vtkGenericEnSightReader.h:367
vtkMultiBlockDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:89
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkGenericEnSightReader::ComplexVariableTypes
int * ComplexVariableTypes
Definition: vtkGenericEnSightReader.h:377
vtkGenericEnSightReader::NumberOfComplexVariables
int NumberOfComplexVariables
Definition: vtkGenericEnSightReader.h:384
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkGenericEnSightReader::NumberOfComplexScalarsPerElement
int NumberOfComplexScalarsPerElement
Definition: vtkGenericEnSightReader.h:397
vtkGenericEnSightReader::NumberOfScalarsPerNode
int NumberOfScalarsPerNode
Definition: vtkGenericEnSightReader.h:387
vtkGenericEnSightReader::FileTypes
FileTypes
Definition: vtkGenericEnSightReader.h:212
vtkGenericEnSightReader::NumberOfVectorsPerElement
int NumberOfVectorsPerElement
Definition: vtkGenericEnSightReader.h:391
vtkGenericEnSightReader::TranslationTable
TranslationTableType * TranslationTable
Definition: vtkGenericEnSightReader.h:436
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkGenericEnSightReader
class to read any type of EnSight files
Definition: vtkGenericEnSightReader.h:48
vtkGenericEnSightReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkGenericEnSightReader.h:421
vtkGenericEnSightReader::ByteOrder
int ByteOrder
Definition: vtkGenericEnSightReader.h:412
vtkGenericEnSightReader::ComplexVariableDescriptions
char ** ComplexVariableDescriptions
Definition: vtkGenericEnSightReader.h:381
vtkMultiBlockDataSetAlgorithm.h
SPARSE_MODE
@ SPARSE_MODE
Definition: vtkGenericEnSightReader.h:43
vtkIdListCollection
maintain an ordered list of IdList objects
Definition: vtkIdListCollection.h:31
vtkGenericEnSightReader::ParticleCoordinatesByIndex
vtkTypeBool ParticleCoordinatesByIndex
Definition: vtkGenericEnSightReader.h:413
NON_SPARSE_MODE
@ NON_SPARSE_MODE
Definition: vtkGenericEnSightReader.h:44
vtkGenericEnSightReader::NumberOfComplexScalarsPerNode
int NumberOfComplexScalarsPerNode
Definition: vtkGenericEnSightReader.h:395
vtkGenericEnSightReader::Reader
vtkGenericEnSightReader * Reader
Definition: vtkGenericEnSightReader.h:369
vtkGenericEnSightReader::FilePath
char * FilePath
Definition: vtkGenericEnSightReader.h:373
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkGenericEnSightReader::NumberOfVariables
int NumberOfVariables
Definition: vtkGenericEnSightReader.h:383
vtkGenericEnSightReader::SelectionModifiedDoNotCallModified
int SelectionModifiedDoNotCallModified
Definition: vtkGenericEnSightReader.h:430
vtkMultiBlockDataSetAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkGenericEnSightReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkGenericEnSightReader.h:422
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkGenericEnSightReader::VariableDescriptions
char ** VariableDescriptions
Definition: vtkGenericEnSightReader.h:380
vtkX3D::description
@ description
Definition: vtkX3D.h:328
vtkGenericEnSightReader::GetReader
vtkGenericEnSightReader * GetReader()
Definition: vtkGenericEnSightReader.h:280
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:44
vtkGenericEnSightReader::CaseFileName
char * CaseFileName
Definition: vtkGenericEnSightReader.h:371
vtkGenericEnSightReader::EnSightVersion
int EnSightVersion
Definition: vtkGenericEnSightReader.h:417
vtkGenericEnSightReader::NumberOfComplexVectorsPerNode
int NumberOfComplexVectorsPerNode
Definition: vtkGenericEnSightReader.h:396
vtkGenericEnSightReader::ReadAllVariables
vtkTypeBool ReadAllVariables
Definition: vtkGenericEnSightReader.h:410
EnsightReaderCellIdMode
EnsightReaderCellIdMode
Definition: vtkGenericEnSightReader.h:40
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkMultiBlockDataSetAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkMultiBlockDataSetAlgorithm.h:80
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkGenericEnSightReader::IFile
FILE * IFile
Definition: vtkGenericEnSightReader.h:368
vtkGenericEnSightReader::NumberOfComplexVectorsPerElement
int NumberOfComplexVectorsPerElement
Definition: vtkGenericEnSightReader.h:398
vtkMultiBlockDataSetAlgorithm
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Definition: vtkMultiBlockDataSetAlgorithm.h:32