00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00019 #ifndef __vtkEnSightReader_h
00020 #define __vtkEnSightReader_h
00021
00022 #include "vtkGenericEnSightReader.h"
00023
00024
00025 class vtkDataSet;
00026 class vtkDataSetCollection;
00027 class vtkEnSightReaderCellIdsType;
00028 class vtkIdList;
00029 class vtkMultiBlockDataSet;
00030
00031 class VTK_IO_EXPORT vtkEnSightReader : public vtkGenericEnSightReader
00032 {
00033 public:
00034 vtkTypeMacro(vtkEnSightReader, vtkGenericEnSightReader);
00035 void PrintSelf(ostream& os, vtkIndent indent);
00036
00037
00038 enum ElementTypesList
00039 {
00040 POINT = 0,
00041 BAR2 = 1,
00042 BAR3 = 2,
00043 NSIDED = 3,
00044 TRIA3 = 4,
00045 TRIA6 = 5,
00046 QUAD4 = 6,
00047 QUAD8 = 7,
00048 NFACED = 8,
00049 TETRA4 = 9,
00050 TETRA10 = 10,
00051 PYRAMID5 = 11,
00052 PYRAMID13 = 12,
00053 HEXA8 = 13,
00054 HEXA20 = 14,
00055 PENTA6 = 15,
00056 PENTA15 = 16,
00057 NUMBER_OF_ELEMENT_TYPES = 17
00058 };
00059
00060 enum VariableTypesList
00061 {
00062 SCALAR_PER_NODE = 0,
00063 VECTOR_PER_NODE = 1,
00064 TENSOR_SYMM_PER_NODE = 2,
00065 SCALAR_PER_ELEMENT = 3,
00066 VECTOR_PER_ELEMENT = 4,
00067 TENSOR_SYMM_PER_ELEMENT = 5,
00068 SCALAR_PER_MEASURED_NODE = 6,
00069 VECTOR_PER_MEASURED_NODE = 7,
00070 COMPLEX_SCALAR_PER_NODE = 8,
00071 COMPLEX_VECTOR_PER_NODE = 9,
00072 COMPLEX_SCALAR_PER_ELEMENT = 10,
00073 COMPLEX_VECTOR_PER_ELEMENT = 11
00074 };
00075
00076 enum SectionTypeList
00077 {
00078 COORDINATES = 0,
00079 BLOCK = 1,
00080 ELEMENT = 2
00081 };
00082
00083
00085
00087 vtkGetStringMacro(MeasuredFileName);
00089
00091
00093 vtkGetStringMacro(MatchFileName);
00095
00097
00105 vtkSetMacro(ParticleCoordinatesByIndex, int);
00106 vtkGetMacro(ParticleCoordinatesByIndex, int);
00107 vtkBooleanMacro(ParticleCoordinatesByIndex, int);
00109
00110 protected:
00111 vtkEnSightReader();
00112 ~vtkEnSightReader();
00113
00114 virtual int RequestInformation(vtkInformation*,
00115 vtkInformationVector**,
00116 vtkInformationVector*);
00117 virtual int RequestData(vtkInformation*,
00118 vtkInformationVector**,
00119 vtkInformationVector*);
00120
00122
00123 vtkSetStringMacro(MeasuredFileName);
00125
00127
00128 vtkSetStringMacro(MatchFileName);
00130
00132
00134 int ReadCaseFile();
00135 int ReadCaseFileGeometry(char* line);
00136 int ReadCaseFileVariable(char* line);
00137 int ReadCaseFileTime(char* line);
00138 int ReadCaseFileFile(char* line);
00140
00141
00142 int CaseFileRead;
00143
00145
00147 virtual int ReadGeometryFile(const char* fileName, int timeStep,
00148 vtkMultiBlockDataSet *output) = 0;
00150
00152
00154 virtual int ReadMeasuredGeometryFile(const char* fileName, int timeStep,
00155 vtkMultiBlockDataSet *output) = 0;
00157
00160 int ReadVariableFiles(vtkMultiBlockDataSet *output);
00161
00163
00165 virtual int ReadScalarsPerNode(const char* fileName, const char* description,
00166 int timeStep, vtkMultiBlockDataSet *output,
00167 int measured = 0, int numberOfComponents = 1,
00168 int component = 0) = 0;
00170
00172
00174 virtual int ReadVectorsPerNode(const char* fileName, const char* description,
00175 int timeStep, vtkMultiBlockDataSet *output,
00176 int measured = 0) = 0;
00178
00180
00182 virtual int ReadTensorsPerNode(const char* fileName, const char* description,
00183 int timeStep, vtkMultiBlockDataSet *output) = 0;
00185
00187
00189 virtual int ReadScalarsPerElement(const char* fileName, const char* description,
00190 int timeStep, vtkMultiBlockDataSet *output,
00191 int numberOfComponents = 1,
00192 int component = 0) = 0;
00194
00196
00198 virtual int ReadVectorsPerElement(const char* fileName, const char* description,
00199 int timeStep, vtkMultiBlockDataSet *output) = 0;
00201
00203
00205 virtual int ReadTensorsPerElement(const char* fileName, const char* description,
00206 int timeStep, vtkMultiBlockDataSet *output) = 0;
00208
00210
00212 virtual int CreateUnstructuredGridOutput(int partId,
00213 char line[80],
00214 const char* name,
00215 vtkMultiBlockDataSet *output) = 0;
00217
00219
00221 virtual int CreateStructuredGridOutput(int partId,
00222 char line[80],
00223 const char* name,
00224 vtkMultiBlockDataSet *output) = 0;
00226
00228 void AddVariableFileName(const char* fileName1, const char* fileName2 = NULL);
00229
00231 void AddVariableDescription(const char* description);
00232
00234 void AddVariableType();
00235
00238 int GetElementType(const char* line);
00239
00242 int GetSectionType(const char *line);
00243
00245 void ReplaceWildcards(char* filename, int num);
00246
00248 void RemoveLeadingBlanks(char *line);
00249
00250
00251 vtkIdList* GetCellIds(int index, int cellType);
00252
00254
00256 void AddToBlock(vtkMultiBlockDataSet* output,
00257 unsigned int blockNo,
00258 vtkDataSet* dataset);
00260
00262
00264 vtkDataSet* GetDataSetFromBlock(vtkMultiBlockDataSet* output,
00265 unsigned int blockNo);
00267
00269
00270 void SetBlockName(vtkMultiBlockDataSet* output, unsigned int blockNo,
00271 const char* name);
00273
00274 char* MeasuredFileName;
00275 char* MatchFileName;
00276
00277
00278 vtkEnSightReaderCellIdsType* CellIds;
00279
00280
00281 vtkIdList* UnstructuredPartIds;
00282
00283 int VariableMode;
00284
00285
00286 char** VariableFileNames;
00287 char** ComplexVariableFileNames;
00288
00289
00290 vtkIdList *VariableTimeSetIds;
00291 vtkIdList *ComplexVariableTimeSetIds;
00292
00293
00294 vtkIdList *VariableFileSetIds;
00295 vtkIdList *ComplexVariableFileSetIds;
00296
00297
00298 vtkIdListCollection *TimeSetFileNameNumbers;
00299 vtkIdList *TimeSetsWithFilenameNumbers;
00300
00301
00302 vtkIdListCollection *FileSetFileNameNumbers;
00303 vtkIdList *FileSetsWithFilenameNumbers;
00304
00305
00306 vtkIdListCollection *FileSetNumberOfSteps;
00307
00308
00309 vtkIdList *TimeSetIds;
00310 vtkIdList *FileSets;
00311
00312 int GeometryTimeSet;
00313 int GeometryFileSet;
00314 int MeasuredTimeSet;
00315 int MeasuredFileSet;
00316
00317 float GeometryTimeValue;
00318 float MeasuredTimeValue;
00319
00320 int UseTimeSets;
00321 vtkSetMacro(UseTimeSets, int);
00322 vtkGetMacro(UseTimeSets, int);
00323 vtkBooleanMacro(UseTimeSets, int);
00324
00325 int UseFileSets;
00326 vtkSetMacro(UseFileSets, int);
00327 vtkGetMacro(UseFileSets, int);
00328 vtkBooleanMacro(UseFileSets, int);
00329
00330 int NumberOfGeometryParts;
00331
00332
00333 int NumberOfMeasuredPoints;
00334
00335 int NumberOfNewOutputs;
00336 int InitialRead;
00337
00338 int CheckOutputConsistency();
00339
00340 int ParticleCoordinatesByIndex;
00341
00342 double ActualTimeValue;
00343
00344 private:
00345 vtkEnSightReader(const vtkEnSightReader&);
00346 void operator=(const vtkEnSightReader&);
00347 };
00348
00349 #endif