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 class vtkDataSet;
00025 class vtkDataSetCollection;
00026 class vtkEnSightReaderCellIdsType;
00027 class vtkIdList;
00028 class vtkMultiBlockDataSet;
00029
00030 class VTK_IO_EXPORT vtkEnSightReader : public vtkGenericEnSightReader
00031 {
00032 public:
00033 vtkTypeMacro(vtkEnSightReader, vtkGenericEnSightReader);
00034 void PrintSelf(ostream& os, vtkIndent indent);
00035
00036
00037 enum ElementTypesList
00038 {
00039 POINT = 0,
00040 BAR2 = 1,
00041 BAR3 = 2,
00042 NSIDED = 3,
00043 TRIA3 = 4,
00044 TRIA6 = 5,
00045 QUAD4 = 6,
00046 QUAD8 = 7,
00047 NFACED = 8,
00048 TETRA4 = 9,
00049 TETRA10 = 10,
00050 PYRAMID5 = 11,
00051 PYRAMID13 = 12,
00052 HEXA8 = 13,
00053 HEXA20 = 14,
00054 PENTA6 = 15,
00055 PENTA15 = 16,
00056 NUMBER_OF_ELEMENT_TYPES = 17
00057 };
00058
00059 enum VariableTypesList
00060 {
00061 SCALAR_PER_NODE = 0,
00062 VECTOR_PER_NODE = 1,
00063 TENSOR_SYMM_PER_NODE = 2,
00064 SCALAR_PER_ELEMENT = 3,
00065 VECTOR_PER_ELEMENT = 4,
00066 TENSOR_SYMM_PER_ELEMENT = 5,
00067 SCALAR_PER_MEASURED_NODE = 6,
00068 VECTOR_PER_MEASURED_NODE = 7,
00069 COMPLEX_SCALAR_PER_NODE = 8,
00070 COMPLEX_VECTOR_PER_NODE = 9,
00071 COMPLEX_SCALAR_PER_ELEMENT = 10,
00072 COMPLEX_VECTOR_PER_ELEMENT = 11
00073 };
00074
00075 enum SectionTypeList
00076 {
00077 COORDINATES = 0,
00078 BLOCK = 1,
00079 ELEMENT = 2
00080 };
00081
00082
00084
00086 vtkGetStringMacro(MeasuredFileName);
00088
00090
00092 vtkGetStringMacro(MatchFileName);
00094
00096
00104 vtkSetMacro(ParticleCoordinatesByIndex, int);
00105 vtkGetMacro(ParticleCoordinatesByIndex, int);
00106 vtkBooleanMacro(ParticleCoordinatesByIndex, int);
00108
00109 protected:
00110 vtkEnSightReader();
00111 ~vtkEnSightReader();
00112
00113 virtual int RequestInformation(vtkInformation*,
00114 vtkInformationVector**,
00115 vtkInformationVector*);
00116 virtual int RequestData(vtkInformation*,
00117 vtkInformationVector**,
00118 vtkInformationVector*);
00119
00121
00122 vtkSetStringMacro(MeasuredFileName);
00124
00126
00127 vtkSetStringMacro(MatchFileName);
00129
00132 int ReadCaseFile();
00133
00134
00135 int CaseFileRead;
00136
00138
00140 virtual int ReadGeometryFile(const char* fileName, int timeStep,
00141 vtkMultiBlockDataSet *output) = 0;
00143
00145
00147 virtual int ReadMeasuredGeometryFile(const char* fileName, int timeStep,
00148 vtkMultiBlockDataSet *output) = 0;
00150
00153 int ReadVariableFiles(vtkMultiBlockDataSet *output);
00154
00156
00158 virtual int ReadScalarsPerNode(const char* fileName, const char* description,
00159 int timeStep, vtkMultiBlockDataSet *output,
00160 int measured = 0, int numberOfComponents = 1,
00161 int component = 0) = 0;
00163
00165
00167 virtual int ReadVectorsPerNode(const char* fileName, const char* description,
00168 int timeStep, vtkMultiBlockDataSet *output,
00169 int measured = 0) = 0;
00171
00173
00175 virtual int ReadTensorsPerNode(const char* fileName, const char* description,
00176 int timeStep, vtkMultiBlockDataSet *output) = 0;
00178
00180
00182 virtual int ReadScalarsPerElement(const char* fileName, const char* description,
00183 int timeStep, vtkMultiBlockDataSet *output,
00184 int numberOfComponents = 1,
00185 int component = 0) = 0;
00187
00189
00191 virtual int ReadVectorsPerElement(const char* fileName, const char* description,
00192 int timeStep, vtkMultiBlockDataSet *output) = 0;
00194
00196
00198 virtual int ReadTensorsPerElement(const char* fileName, const char* description,
00199 int timeStep, vtkMultiBlockDataSet *output) = 0;
00201
00203
00205 virtual int CreateUnstructuredGridOutput(int partId,
00206 char line[80],
00207 const char* name,
00208 vtkMultiBlockDataSet *output) = 0;
00210
00212
00214 virtual int CreateStructuredGridOutput(int partId,
00215 char line[80],
00216 const char* name,
00217 vtkMultiBlockDataSet *output) = 0;
00219
00221 void AddVariableFileName(const char* fileName1, const char* fileName2 = NULL);
00222
00224 void AddVariableDescription(const char* description);
00225
00227 void AddVariableType();
00228
00231 int GetElementType(const char* line);
00232
00235 int GetSectionType(const char *line);
00236
00238 void ReplaceWildcards(char* filename, int num);
00239
00241 void RemoveLeadingBlanks(char *line);
00242
00243
00244 vtkIdList* GetCellIds(int index, int cellType);
00245
00247
00249 void AddToBlock(vtkMultiBlockDataSet* output,
00250 unsigned int blockNo,
00251 vtkDataSet* dataset);
00253
00255
00257 vtkDataSet* GetDataSetFromBlock(vtkMultiBlockDataSet* output,
00258 unsigned int blockNo);
00260
00262
00263 void SetBlockName(vtkMultiBlockDataSet* output, unsigned int blockNo,
00264 const char* name);
00266
00267 char* MeasuredFileName;
00268 char* MatchFileName;
00269
00270
00271 vtkEnSightReaderCellIdsType* CellIds;
00272
00273
00274 vtkIdList* UnstructuredPartIds;
00275
00276 int VariableMode;
00277
00278
00279 char** VariableFileNames;
00280 char** ComplexVariableFileNames;
00281
00282
00283 vtkIdList *VariableTimeSetIds;
00284 vtkIdList *ComplexVariableTimeSetIds;
00285
00286
00287 vtkIdList *VariableFileSetIds;
00288 vtkIdList *ComplexVariableFileSetIds;
00289
00290
00291 vtkIdListCollection *TimeSetFileNameNumbers;
00292 vtkIdList *TimeSetsWithFilenameNumbers;
00293
00294
00295 vtkIdListCollection *FileSetFileNameNumbers;
00296 vtkIdList *FileSetsWithFilenameNumbers;
00297
00298
00299 vtkIdListCollection *FileSetNumberOfSteps;
00300
00301
00302 vtkIdList *TimeSetIds;
00303 vtkIdList *FileSets;
00304
00305 int GeometryTimeSet;
00306 int GeometryFileSet;
00307 int MeasuredTimeSet;
00308 int MeasuredFileSet;
00309
00310 float GeometryTimeValue;
00311 float MeasuredTimeValue;
00312
00313 int UseTimeSets;
00314 vtkSetMacro(UseTimeSets, int);
00315 vtkGetMacro(UseTimeSets, int);
00316 vtkBooleanMacro(UseTimeSets, int);
00317
00318 int UseFileSets;
00319 vtkSetMacro(UseFileSets, int);
00320 vtkGetMacro(UseFileSets, int);
00321 vtkBooleanMacro(UseFileSets, int);
00322
00323 int NumberOfGeometryParts;
00324
00325
00326 int NumberOfMeasuredPoints;
00327
00328 int NumberOfNewOutputs;
00329 int InitialRead;
00330
00331 int CheckOutputConsistency();
00332
00333 int ParticleCoordinatesByIndex;
00334
00335 double ActualTimeValue;
00336
00337
00338 enum { FORWARD_TIME_STEP_SHIFT_NON = 0,
00339 FORWARD_TIME_STEP_SHIFT_YES = 1,
00340 FORWARD_TIME_STEP_SHIFT_END = 2
00341 };
00342
00343
00344
00345
00346
00347
00348 int PreviousTimeStepInFile;
00349 int ForwardTimeStepShiftMode;
00350 istream * ForwardTimeStepShiftIS;
00351
00352 private:
00353 vtkEnSightReader(const vtkEnSightReader&);
00354 void operator=(const vtkEnSightReader&);
00355 };
00356
00357 #endif