VTK
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=========================================================================*/
26#ifndef vtkGenericEnSightReader_h
27#define vtkGenericEnSightReader_h
28
29#include "vtkIOEnSightModule.h" // For export macro
31
36
37class TranslationTableType;
38
39// Cell/Point Ids store mode:
40// Sparse Mode is supposed to be for a large number of distributed processes (Unstructured)
41// Non Sparse Mode is supposed to be for a small number of distributed processes (Unstructured)
42// Implicit Mode is for Structured Data
44{
49};
50
52{
53public:
56 void PrintSelf(ostream& os, vtkIndent indent);
57
59
62 void SetCaseFileName(const char* fileName);
63 vtkGetStringMacro(CaseFileName);
65
67
70 vtkSetStringMacro(FilePath);
73
75
78 vtkGetMacro(EnSightVersion, int);
80
82
85 vtkGetMacro(NumberOfVariables, int);
86 vtkGetMacro(NumberOfComplexVariables, int);
88
90
93 int GetNumberOfVariables(int type); // returns -1 if unknown type specified
94 vtkGetMacro(NumberOfScalarsPerNode, int);
95 vtkGetMacro(NumberOfVectorsPerNode, int);
96 vtkGetMacro(NumberOfTensorsSymmPerNode, int);
97 vtkGetMacro(NumberOfScalarsPerElement, int);
98 vtkGetMacro(NumberOfVectorsPerElement, int);
99 vtkGetMacro(NumberOfTensorsSymmPerElement, int);
100 vtkGetMacro(NumberOfScalarsPerMeasuredNode, int);
101 vtkGetMacro(NumberOfVectorsPerMeasuredNode, int);
102 vtkGetMacro(NumberOfComplexScalarsPerNode, int);
103 vtkGetMacro(NumberOfComplexVectorsPerNode, int);
104 vtkGetMacro(NumberOfComplexScalarsPerElement, int);
105 vtkGetMacro(NumberOfComplexVectorsPerElement, int);
107
111 const char* GetDescription(int n);
112
116 const char* GetComplexDescription(int n);
117
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, int);
174 vtkSetMacro(ReadAllVariables, int);
175 vtkGetMacro(ReadAllVariables, int);
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 vtkGetStringMacro(GeometryFileName);
252
254
266 vtkSetMacro(ParticleCoordinatesByIndex, int);
267 vtkGetMacro(ParticleCoordinatesByIndex, int);
268 vtkBooleanMacro(ParticleCoordinatesByIndex, int);
270
275 static int CanReadFile(const char *casefilename);
276
277//THIB
278vtkGenericEnSightReader* GetReader() { return this->Reader; }
279
280
281protected:
284
292
299
304 int ReadLine(char result[256]);
305
310 int ReadBinaryLine(char result[80]);
311
312 // Internal function that skips blank lines and reads the 1st
313 // non-blank line it finds (up to 256 characters).
314 // Returns 0 is there was an error.
315 int ReadNextDataLine(char result[256]);
316
318
321 vtkSetStringMacro(GeometryFileName);
323
325
331
333
336 void AddVariableType(int variableType);
337 void AddComplexVariableType(int variableType);
339
341
345 int ReplaceWildcards(char* fileName, int timeSet, int fileSet);
346 void ReplaceWildcardsHelper(char* fileName, int num);
348
349 // Callback registered with the SelectionObserver.
350 static void SelectionModifiedCallback(vtkObject* caller, unsigned long eid,
351 void* clientdata, void* calldata);
353
354 // Utility to create argument for vtkDataArraySelection::SetArrays.
355 char** CreateStringArray(int numStrings);
356 void DestroyStringArray(int numStrings, char** strings);
357
358 // Fill the vtkDataArraySelection objects with the current set of
359 // EnSight variables.
361
362 // Fill the vtkDataArraySelection objects with the current set of
363 // arrays in the internal EnSight reader.
365
366 // Fill the internal EnSight reader's vtkDataArraySelection objects
367 // from those in this object.
369
370 istream* IS;
371 FILE *IFile;
373
376 char* FilePath;
377
378 // array of types (one entry per instance of variable type in case file)
381
382 // pointers to lists of descriptions
385
388
389 // number of file names / descriptions per type
402
406
407 // Flag for whether TimeValue has been set.
409
412
414
417
418 // The EnSight file version being read. Valid after
419 // UpdateInformation. Value is -1 for unknown version.
421
422 // The array selections. These map over the variables and complex
423 // variables to hide the details of EnSight behind VTK terminology.
426
427 // The observer to modify this object when the array selections are
428 // modified.
430
431 // Whether the SelectionModified callback should invoke Modified.
432 // This is used when we are copying to/from the internal reader.
434
435 // Insert a partId and return the 'realId' that should be used.
436 int InsertNewPartId(int partId);
437
438 // Wrapper around an stl map
439 TranslationTableType *TranslationTable;
440
441private:
442 vtkGenericEnSightReader(const vtkGenericEnSightReader&) VTK_DELETE_FUNCTION;
443 void operator=(const vtkGenericEnSightReader&) VTK_DELETE_FUNCTION;
444};
445
446#endif
supports function callbacks
maintain an unordered 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.
const char * GetCellArrayName(int index)
char ** CreateStringArray(int numStrings)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkGenericEnSightReader * GetReader()
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...
int GetNumberOfVariables(int type)
Get the number of variables of a particular type.
const char * GetByteOrderAsString()
void ReplaceWildcardsHelper(char *fileName, int num)
virtual int FillOutputPortInformation(int port, vtkInformation *info)
Fill the output port information objects for this algorithm.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
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.
static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
int ReplaceWildcards(char *fileName, int timeSet, int fileSet)
Replace the wildcards in the geometry file name with appropriate filename numbers as specified in the...
int GetComplexVariableType(int n)
virtual void ClearForNewCaseFileName()
Clear data structures such that setting a new case file name works.
const char * GetDescription(int n, int type)
Get the nth description of a particular variable type.
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)
const char * GetDescription(int n)
Get the nth description for a non-complex variable.
int ReadBinaryLine(char result[80])
Internal function to read up to 80 characters from a binary file.
static int CanReadFile(const char *casefilename)
Returns true if the file pointed to by casefilename appears to be a valid EnSight case file.
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
const char * GetPointArrayName(int index)
Get the name of the point or cell array with the given index in the input.
int GetVariableType(int n)
Get the variable type of variable n.
void SetCaseFileName(const char *fileName)
Set/Get the Case file name.
void SetDataArraySelectionSetsFromReader()
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()
static vtkGenericEnSightReader * New()
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 unordered list of dataarray objects
a simple class to control print indentation
Definition: vtkIndent.h:40
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:60
@ info
Definition: vtkX3D.h:376
@ value
Definition: vtkX3D.h:220
@ port
Definition: vtkX3D.h:447
@ type
Definition: vtkX3D.h:516
@ description
Definition: vtkX3D.h:322
@ name
Definition: vtkX3D.h:219
@ index
Definition: vtkX3D.h:246
EnsightReaderCellIdMode
@ SINGLE_PROCESS_MODE
@ IMPLICIT_STRUCTURED_MODE
@ NON_SPARSE_MODE
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.