00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00040 #ifndef __vtkOpenFOAMReader_h
00041 #define __vtkOpenFOAMReader_h
00042
00043 #include "vtkMultiBlockDataSetAlgorithm.h"
00044
00045 class vtkCollection;
00046 class vtkCharArray;
00047 class vtkDataArraySelection;
00048 class vtkDoubleArray;
00049 class vtkStdString;
00050 class vtkStringArray;
00051
00052 class vtkOpenFOAMReaderPrivate;
00053
00054 class VTK_IO_EXPORT vtkOpenFOAMReader : public vtkMultiBlockDataSetAlgorithm
00055 {
00056 public:
00057 static vtkOpenFOAMReader *New();
00058 vtkTypeMacro(vtkOpenFOAMReader, vtkMultiBlockDataSetAlgorithm);
00059 void PrintSelf(ostream &, vtkIndent);
00060
00062 int CanReadFile(const char *);
00063
00065
00066 vtkSetStringMacro(FileName);
00067 vtkGetStringMacro(FileName);
00069
00071
00072 int GetNumberOfCellArrays(void)
00073 { return this->GetNumberOfSelectionArrays(this->CellDataArraySelection); }
00075
00077
00078 int GetCellArrayStatus(const char *name)
00079 { return this->GetSelectionArrayStatus(this->CellDataArraySelection, name); }
00080 void SetCellArrayStatus(const char *name, int status)
00081 { this->SetSelectionArrayStatus(this->CellDataArraySelection, name, status); }
00083
00085
00086 const char *GetCellArrayName(int index)
00087 { return this->GetSelectionArrayName(this->CellDataArraySelection, index); }
00089
00091
00092 void DisableAllCellArrays()
00093 { this->DisableAllSelectionArrays(this->CellDataArraySelection); }
00094 void EnableAllCellArrays()
00095 { this->EnableAllSelectionArrays(this->CellDataArraySelection); }
00097
00099
00100 int GetNumberOfPointArrays(void)
00101 { return this->GetNumberOfSelectionArrays(this->PointDataArraySelection); }
00103
00105
00106 int GetPointArrayStatus(const char *name)
00107 { return this->GetSelectionArrayStatus(this->PointDataArraySelection, name); }
00108 void SetPointArrayStatus(const char *name, int status)
00109 { this->SetSelectionArrayStatus(this->PointDataArraySelection,
00110 name, status); }
00112
00114
00115 const char *GetPointArrayName(int index)
00116 { return this->GetSelectionArrayName(this->PointDataArraySelection, index); }
00118
00120
00121 void DisableAllPointArrays()
00122 { this->DisableAllSelectionArrays(this->PointDataArraySelection); }
00123 void EnableAllPointArrays()
00124 { this->EnableAllSelectionArrays(this->PointDataArraySelection); }
00126
00128
00129 int GetNumberOfLagrangianArrays(void)
00130 { return this->GetNumberOfSelectionArrays(
00131 this->LagrangianDataArraySelection); }
00133
00135
00137 int GetLagrangianArrayStatus(const char *name)
00138 { return this->GetSelectionArrayStatus(this->LagrangianDataArraySelection,
00139 name); }
00140 void SetLagrangianArrayStatus(const char *name, int status)
00141 { this->SetSelectionArrayStatus(this->LagrangianDataArraySelection, name,
00142 status); }
00144
00146
00148 const char* GetLagrangianArrayName(int index)
00149 { return this->GetSelectionArrayName(this->LagrangianDataArraySelection,
00150 index); }
00152
00154
00155 void DisableAllLagrangianArrays()
00156 { this->DisableAllSelectionArrays(this->LagrangianDataArraySelection); }
00157 void EnableAllLagrangianArrays()
00158 { this->EnableAllSelectionArrays(this->LagrangianDataArraySelection); }
00160
00162
00164 int GetNumberOfPatchArrays(void)
00165 { return this->GetNumberOfSelectionArrays(this->PatchDataArraySelection); }
00167
00169
00170 int GetPatchArrayStatus(const char *name)
00171 { return this->GetSelectionArrayStatus(this->PatchDataArraySelection, name); }
00172 void SetPatchArrayStatus(const char *name, int status)
00173 { this->SetSelectionArrayStatus(this->PatchDataArraySelection, name,
00174 status); }
00176
00178
00179 const char *GetPatchArrayName(int index)
00180 { return this->GetSelectionArrayName(this->PatchDataArraySelection, index); }
00182
00184
00185 void DisableAllPatchArrays()
00186 { this->DisableAllSelectionArrays(this->PatchDataArraySelection); }
00187 void EnableAllPatchArrays()
00188 { this->EnableAllSelectionArrays(this->PatchDataArraySelection); }
00190
00192
00194 vtkSetMacro(CreateCellToPoint,int);
00195 vtkGetMacro(CreateCellToPoint,int);
00196 vtkBooleanMacro(CreateCellToPoint, int);
00198
00200
00201 vtkSetMacro(CacheMesh, int);
00202 vtkGetMacro(CacheMesh, int);
00203 vtkBooleanMacro(CacheMesh, int);
00205
00207
00208 vtkSetMacro(DecomposePolyhedra, int);
00209 vtkGetMacro(DecomposePolyhedra, int);
00210 vtkBooleanMacro(DecomposePolyhedra, int);
00212
00213
00215
00216 vtkSetMacro(PositionsIsIn13Format, int);
00217 vtkGetMacro(PositionsIsIn13Format, int);
00218 vtkBooleanMacro(PositionsIsIn13Format, int);
00220
00222
00224 vtkSetMacro(ListTimeStepsByControlDict, int);
00225 vtkGetMacro(ListTimeStepsByControlDict, int);
00226 vtkBooleanMacro(ListTimeStepsByControlDict, int);
00228
00230
00231 vtkSetMacro(AddDimensionsToArrayNames, int);
00232 vtkGetMacro(AddDimensionsToArrayNames, int);
00233 vtkBooleanMacro(AddDimensionsToArrayNames, int);
00235
00237
00238 vtkSetMacro(ReadZones, int);
00239 vtkGetMacro(ReadZones, int);
00240 vtkBooleanMacro(ReadZones, int);
00242
00243 void SetRefresh() { this->Refresh = true; this->Modified(); }
00244
00245 void SetParent(vtkOpenFOAMReader *parent) { this->Parent = parent; }
00246
00247 int MakeInformationVector(vtkInformationVector *, const vtkStdString &);
00248
00249 bool SetTimeValue(const double);
00250 vtkDoubleArray *GetTimeValues();
00251 int MakeMetaDataAtTimeStep(const bool);
00252
00253
00254 friend class vtkOpenFOAMReaderPrivate;
00255
00256
00257 protected:
00258
00259 bool Refresh;
00260
00261
00262 int CreateCellToPoint;
00263
00264
00265 int CacheMesh;
00266
00267
00268 int DecomposePolyhedra;
00269
00270
00271 int PositionsIsIn13Format;
00272
00273
00274 int ReadZones;
00275
00276
00277 int ListTimeStepsByControlDict;
00278
00279
00280 int AddDimensionsToArrayNames;
00281
00282 char *FileName;
00283 vtkCharArray *CasePath;
00284 vtkCollection *Readers;
00285
00286
00287 vtkDataArraySelection *PatchDataArraySelection;
00288 vtkDataArraySelection *CellDataArraySelection;
00289 vtkDataArraySelection *PointDataArraySelection;
00290 vtkDataArraySelection *LagrangianDataArraySelection;
00291
00292
00293 unsigned long int PatchSelectionMTimeOld;
00294 unsigned long int CellSelectionMTimeOld;
00295 unsigned long int PointSelectionMTimeOld;
00296 unsigned long int LagrangianSelectionMTimeOld;
00297
00298
00299 vtkStdString *FileNameOld;
00300 int ListTimeStepsByControlDictOld;
00301 int CreateCellToPointOld;
00302 int DecomposePolyhedraOld;
00303 int PositionsIsIn13FormatOld;
00304 int AddDimensionsToArrayNamesOld;
00305 int ReadZonesOld;
00306
00307
00308 vtkStringArray *LagrangianPaths;
00309
00310
00311 int NumberOfReaders;
00312
00313 int CurrentReaderIndex;
00314
00315 vtkOpenFOAMReader();
00316 ~vtkOpenFOAMReader();
00317 int RequestInformation(vtkInformation *, vtkInformationVector **,
00318 vtkInformationVector *);
00319 int RequestData(vtkInformation *, vtkInformationVector **,
00320 vtkInformationVector *);
00321
00322 void CreateCasePath(vtkStdString &, vtkStdString &);
00323 void SetTimeInformation(vtkInformationVector *, vtkDoubleArray *);
00324 void CreateCharArrayFromString(vtkCharArray *, const char *, vtkStdString &);
00325 void UpdateStatus();
00326 void UpdateProgress(double);
00327
00328 private:
00329 vtkOpenFOAMReader *Parent;
00330
00331 vtkOpenFOAMReader(const vtkOpenFOAMReader&);
00332 void operator=(const vtkOpenFOAMReader&);
00333
00334 int GetNumberOfSelectionArrays(vtkDataArraySelection *);
00335 int GetSelectionArrayStatus(vtkDataArraySelection *, const char *);
00336 void SetSelectionArrayStatus(vtkDataArraySelection *, const char *, int);
00337 const char *GetSelectionArrayName(vtkDataArraySelection *, int);
00338 void DisableAllSelectionArrays(vtkDataArraySelection *);
00339 void EnableAllSelectionArrays(vtkDataArraySelection *);
00340
00341 void AddSelectionNames(vtkDataArraySelection *, vtkStringArray *);
00342 };
00343
00344 #endif