Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

292 lines
9.0 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkEnSightReader.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkEnSightReader - superclass for EnSight file readers
#ifndef __vtkEnSightReader_h
#define __vtkEnSightReader_h
#include "vtkGenericEnSightReader.h"
class vtkDataSetCollection;
class vtkIdList;
class vtkEnSightReaderCellIdsType;
class VTK_IO_EXPORT vtkEnSightReader : public vtkGenericEnSightReader
{
public:
vtkTypeRevisionMacro(vtkEnSightReader, vtkGenericEnSightReader);
void PrintSelf(ostream& os, vtkIndent indent);
void Update();
void ExecuteInformation();
//BTX
enum ElementTypesList
{
POINT = 0,
BAR2 = 1,
BAR3 = 2,
NSIDED = 3,
TRIA3 = 4,
TRIA6 = 5,
QUAD4 = 6,
QUAD8 = 7,
TETRA4 = 8,
TETRA10 = 9,
PYRAMID5 = 10,
PYRAMID13 = 11,
HEXA8 = 12,
HEXA20 = 13,
PENTA6 = 14,
PENTA15 = 15
};
enum VariableTypesList
{
SCALAR_PER_NODE = 0,
VECTOR_PER_NODE = 1,
TENSOR_SYMM_PER_NODE = 2,
SCALAR_PER_ELEMENT = 3,
VECTOR_PER_ELEMENT = 4,
TENSOR_SYMM_PER_ELEMENT = 5,
SCALAR_PER_MEASURED_NODE = 6,
VECTOR_PER_MEASURED_NODE = 7,
COMPLEX_SCALAR_PER_NODE = 8,
COMPLEX_VECTOR_PER_NODE = 9,
COMPLEX_SCALAR_PER_ELEMENT = 10,
COMPLEX_VECTOR_PER_ELEMENT = 11
};
enum SectionTypeList
{
COORDINATES = 0,
BLOCK = 1,
ELEMENT = 2
};
//ETX
// Description:
// This method sets/replaces one of the outputs of the
// reader without changing it's modification time.
// Make sure that you pass the right type of data object.
void ReplaceNthOutput(int n, vtkDataObject* output);
// Description:
// OutputsAreValid indicates whether the outputs from this reader have
// changed in a consistent way. If during re-reading (because of a change in
// time step or data set) the number of outputs becomes less than the current
// number or the type of a particular output changes (e.g., from
// vtkUnstructuredGrid to vtkImageData), then this flag is set to 0.
// Otherwise it is set to 1.
vtkGetMacro(OutputsAreValid, int);
protected:
vtkEnSightReader();
~vtkEnSightReader();
void Execute();
// Description:
// Read the case file. If an error occurred, 0 is returned; otherwise 1.
int ReadCaseFile();
// set in UpdateInformation to value returned from ReadCaseFile
int CaseFileRead;
// Description:
// Read the geometry file. If an error occurred, 0 is returned; otherwise 1.
virtual int ReadGeometryFile(const char* fileName, int timeStep) = 0;
// Description:
// Read the measured geometry file. If an error occurred, 0 is returned;
// otherwise 1.
virtual int ReadMeasuredGeometryFile(const char* fileName, int timeStep) = 0;
// Description:
// Read the variable files. If an error occurred, 0 is returned; otherwise 1.
int ReadVariableFiles();
// Description:
// Read scalars per node for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadScalarsPerNode(const char* fileName, const char* description,
int timeStep, int measured = 0,
int numberOfComponents = 1,
int component = 0) = 0;
// Description:
// Read vectors per node for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadVectorsPerNode(const char* fileName, const char* description,
int timeStep, int measured = 0) = 0;
// Description:
// Read tensors per node for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadTensorsPerNode(const char* fileName, const char* description,
int timeStep) = 0;
// Description:
// Read scalars per element for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadScalarsPerElement(const char* fileName, const char* description,
int timeStep, int numberOfComponents = 1,
int component = 0) = 0;
// Description:
// Read vectors per element for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadVectorsPerElement(const char* fileName, const char* description,
int timeStep) = 0;
// Description:
// Read tensors per element for this dataset. If an error occurred, 0 is
// returned; otherwise 1.
virtual int ReadTensorsPerElement(const char* fileName, const char* description,
int timeStep) = 0;
// Description:
// Read an unstructured part (partId) from the geometry file and create a
// vtkUnstructuredGrid output. Return 0 if EOF reached.
virtual int CreateUnstructuredGridOutput(int partId,
char line[80],
const char* name) = 0;
// Description:
// Read a structured part from the geometry file and create a
// vtkStructuredGridOutput. Return 0 if EOF reached.
virtual int CreateStructuredGridOutput(int partId,
char line[80],
const char* name) = 0;
// Description:
// Set/Get the Model file name.
vtkSetStringMacro(GeometryFileName);
vtkGetStringMacro(GeometryFileName);
// Description:
// Set/Get the Measured file name.
vtkSetStringMacro(MeasuredFileName);
vtkGetStringMacro(MeasuredFileName);
// Description:
// Set/Get the Match file name.
vtkSetStringMacro(MatchFileName);
vtkGetStringMacro(MatchFileName);
// Description:
// Add another file name to the list for a particular variable type.
void AddVariableFileName(const char* fileName1, const char* fileName2 = NULL);
// Description:
// Add another description to the list for a particular variable type.
void AddVariableDescription(const char* description);
// Description:
// Record the variable type for the variable line just read.
void AddVariableType();
// Description:
// Determine the element type from a line read a file. Return -1 for
// invalid element type.
int GetElementType(const char* line);
// Description:
// Determine the section type from a line read a file. Return -1 for
// invalid section type.
int GetSectionType(const char *line);
// Description:
// Replace the *'s in the filename with the given filename number.
void ReplaceWildcards(char* filename, int num);
// Get the vtkIdList for the given output index and cell type.
vtkIdList* GetCellIds(int index, int cellType);
char* MeasuredFileName;
char* MatchFileName; // may not actually be necessary to read this file
// pointer to lists of vtkIdLists (cell ids per element type per part)
vtkEnSightReaderCellIdsType* CellIds;
// part ids of unstructured outputs
vtkIdList* UnstructuredPartIds;
int VariableMode;
// pointers to lists of filenames
char** VariableFileNames; // non-complex
char** ComplexVariableFileNames;
// array of time sets
vtkIdList *VariableTimeSetIds;
vtkIdList *ComplexVariableTimeSetIds;
// array of file sets
vtkIdList *VariableFileSetIds;
vtkIdList *ComplexVariableFileSetIds;
// collection of filename numbers per time set
vtkIdListCollection *TimeSetFileNameNumbers;
vtkIdList *TimeSetsWithFilenameNumbers;
// collection of filename numbers per file set
vtkIdListCollection *FileSetFileNameNumbers;
vtkIdList *FileSetsWithFilenameNumbers;
// collection of number of steps per file per file set
vtkIdListCollection *FileSetNumberOfSteps;
// ids of the time and file sets
vtkIdList *TimeSetIds;
vtkIdList *FileSets;
int GeometryTimeSet;
int GeometryFileSet;
int MeasuredTimeSet;
int MeasuredFileSet;
float GeometryTimeValue;
float MeasuredTimeValue;
int UseTimeSets;
vtkSetMacro(UseTimeSets, int);
vtkGetMacro(UseTimeSets, int);
vtkBooleanMacro(UseTimeSets, int);
int UseFileSets;
vtkSetMacro(UseFileSets, int);
vtkGetMacro(UseFileSets, int);
vtkBooleanMacro(UseFileSets, int);
int NumberOfGeometryParts;
void SetNumberOfOutputsInternal(int num);
// global list of points for measured geometry
int NumberOfMeasuredPoints;
int NumberOfNewOutputs;
int OutputsAreValid;
int InitialRead;
int CheckOutputConsistency();
private:
vtkEnSightReader(const vtkEnSightReader&); // Not implemented.
void operator=(const vtkEnSightReader&); // Not implemented.
};
#endif