00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00035 #ifndef __vtkEnSightReader_h
00036 #define __vtkEnSightReader_h
00037
00038 #include "vtkGenericEnSightReader.h"
00039
00040 class vtkDataSetCollection;
00041 class vtkIdList;
00042
00043 class VTK_IO_EXPORT vtkEnSightReader : public vtkGenericEnSightReader
00044 {
00045 public:
00046 vtkTypeRevisionMacro(vtkEnSightReader, vtkGenericEnSightReader);
00047 void PrintSelf(ostream& os, vtkIndent indent);
00048
00049 void Update();
00050 void ExecuteInformation();
00051
00052
00053 enum ElementTypesList
00054 {
00055 POINT = 0,
00056 BAR2 = 1,
00057 BAR3 = 2,
00058 NSIDED = 3,
00059 TRIA3 = 4,
00060 TRIA6 = 5,
00061 QUAD4 = 6,
00062 QUAD8 = 7,
00063 TETRA4 = 8,
00064 TETRA10 = 9,
00065 PYRAMID5 = 10,
00066 PYRAMID13 = 11,
00067 HEXA8 = 12,
00068 HEXA20 = 13,
00069 PENTA6 = 14,
00070 PENTA15 = 15
00071 };
00072
00073 enum VariableTypesList
00074 {
00075 SCALAR_PER_NODE = 0,
00076 VECTOR_PER_NODE = 1,
00077 TENSOR_SYMM_PER_NODE = 2,
00078 SCALAR_PER_ELEMENT = 3,
00079 VECTOR_PER_ELEMENT = 4,
00080 TENSOR_SYMM_PER_ELEMENT = 5,
00081 SCALAR_PER_MEASURED_NODE = 6,
00082 VECTOR_PER_MEASURED_NODE = 7,
00083 COMPLEX_SCALAR_PER_NODE = 8,
00084 COMPLEX_VECTOR_PER_NODE = 9,
00085 COMPLEX_SCALAR_PER_ELEMENT = 10,
00086 COMPLEX_VECTOR_PER_ELEMENT = 11
00087 };
00088
00089
00093 void ReplaceNthOutput(int n, vtkDataObject* output);
00094
00096
00102 vtkGetMacro(OutputsAreValid, int);
00104
00105 protected:
00106 vtkEnSightReader();
00107 ~vtkEnSightReader();
00108
00109 void Execute();
00110
00113 int ReadCaseFile();
00114
00115
00116 int CaseFileRead;
00117
00120 virtual int ReadGeometryFile(char* fileName, int timeStep) = 0;
00121
00124 virtual int ReadMeasuredGeometryFile(char* fileName, int timeStep) = 0;
00125
00128 int ReadVariableFiles();
00129
00131
00133 virtual int ReadScalarsPerNode(char* fileName, char* description,
00134 int timeStep, int measured = 0,
00135 int numberOfComponents = 1,
00136 int component = 0) = 0;
00138
00140
00142 virtual int ReadVectorsPerNode(char* fileName, char* description,
00143 int timeStep, int measured = 0) = 0;
00145
00147
00149 virtual int ReadTensorsPerNode(char* fileName, char* description,
00150 int timeStep) = 0;
00152
00154
00156 virtual int ReadScalarsPerElement(char* fileName, char* description,
00157 int timeStep, int numberOfComponents = 1,
00158 int component = 0) = 0;
00160
00162
00164 virtual int ReadVectorsPerElement(char* fileName, char* description,
00165 int timeStep) = 0;
00167
00169
00171 virtual int ReadTensorsPerElement(char* fileName, char* description,
00172 int timeStep) = 0;
00174
00177 virtual int CreateUnstructuredGridOutput(int partId, char line[256]) = 0;
00178
00181 virtual int CreateStructuredGridOutput(int partId, char line[256]) = 0;
00182
00184
00185 vtkSetStringMacro(GeometryFileName);
00186 vtkGetStringMacro(GeometryFileName);
00188
00190
00191 vtkSetStringMacro(MeasuredFileName);
00192 vtkGetStringMacro(MeasuredFileName);
00194
00196
00197 vtkSetStringMacro(MatchFileName);
00198 vtkGetStringMacro(MatchFileName);
00200
00202 void AddVariableFileName(char* fileName1, char* fileName2 = NULL);
00203
00205 void AddVariableDescription(char* description);
00206
00208 void AddVariableType();
00209
00212 int GetElementType(char* line);
00213
00215 void ReplaceWildcards(char* filename, int num);
00216
00217 char* MeasuredFileName;
00218 char* MatchFileName;
00219
00220
00221 vtkIdList*** CellIds;
00222
00223
00224 vtkIdList* UnstructuredPartIds;
00225
00226 int VariableMode;
00227
00228
00229 char** VariableFileNames;
00230 char** ComplexVariableFileNames;
00231
00232
00233 vtkIdList *VariableTimeSetIds;
00234 vtkIdList *ComplexVariableTimeSetIds;
00235
00236
00237 vtkIdList *VariableFileSetIds;
00238 vtkIdList *ComplexVariableFileSetIds;
00239
00240
00241 vtkIdListCollection *TimeSetFileNameNumbers;
00242 vtkIdList *TimeSetsWithFilenameNumbers;
00243
00244
00245 vtkIdListCollection *FileSetFileNameNumbers;
00246 vtkIdList *FileSetsWithFilenameNumbers;
00247
00248
00249 vtkIdListCollection *FileSetNumberOfSteps;
00250
00251
00252 vtkIdList *TimeSetIds;
00253 vtkIdList *FileSets;
00254
00255 int GeometryTimeSet;
00256 int GeometryFileSet;
00257 int MeasuredTimeSet;
00258 int MeasuredFileSet;
00259
00260 float GeometryTimeValue;
00261 float MeasuredTimeValue;
00262
00263 int UseTimeSets;
00264 vtkSetMacro(UseTimeSets, int);
00265 vtkGetMacro(UseTimeSets, int);
00266 vtkBooleanMacro(UseTimeSets, int);
00267
00268 int UseFileSets;
00269 vtkSetMacro(UseFileSets, int);
00270 vtkGetMacro(UseFileSets, int);
00271 vtkBooleanMacro(UseFileSets, int);
00272
00273 int NumberOfGeometryParts;
00274
00275 void SetNumberOfOutputsInternal(int num);
00276
00277
00278 int NumberOfMeasuredPoints;
00279 vtkIdList *MeasuredNodeIds;
00280
00281 int NumberOfNewOutputs;
00282 int OutputsAreValid;
00283 int InitialRead;
00284
00285 int CheckOutputConsistency();
00286
00287 private:
00288 vtkEnSightReader(const vtkEnSightReader&);
00289 void operator=(const vtkEnSightReader&);
00290 };
00291
00292 #endif